java笔记22 IO流1(字符流及缓冲区)
来源:互联网 发布:2015年度十大网络剧 编辑:程序博客网 时间:2024/04/30 15:39
1. IO流
1.1 IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。
1.2 输入流和输出流相对于内存设备而言。
将外设中的数据读取到内存中:输入。
将内存的数写入到外设中:输出。
1.3 流按操作数据分为两种:字节流与字符流。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。再对这个文字进行操作。简单说:字节流+编码表。
2. IO流常用基类
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
P.S.
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
3. 字符流的操作
数据最常见的体现形式是:文件
import java.io.*;
public class H_06IOStream {
public static void main(String[] args) throws Exception{
// 创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件
//该文件会被创建在指定目录下,如果已有,会被覆盖。
FileWriter fw=new FileWriter("demo.txt");
//调用write方法 将字符串写到流中
fw.write("hello java");
//刷新流对象中的缓冲数据,将流刷新到目的地
fw.flush();
//fw.close() 关闭流资源,在关闭前会刷新一次。
fw.close();
}
}
4. IO流的异常处理
IO流的异常处理方式:为防止代码异常导致流无法关闭,因此在finally中对流进行关闭。
5. Writer的续写
import java.io.*;
public class H_09WriterContinue {
public static void main(String[] args) {
// 传递一个true参数,代表不覆盖文件,并在已有的末尾进行数据续写
FileWriter fw=null;
try
{
fw=new FileWriter("demo.txt",true);
fw.write("\r\n xiexie");//因为是用windows的底层方法,所以要用\r\n
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}
finally
{
try
{
if(fw!=null)//一定要判断,如果有多个,要分别判断并关闭
fw.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
6. 文件读取的第一种方式
使用read()方法,一次读一个字符
import java.io.*;
public class H_10ReaderDemo {
public static void main(String[] args) throws IOException {
//创建一个文件读取流对象,和指定名称的文件相关联
//要保证该文件是已经存在的,如果不存在会发生FileNotFoundException
FileReader fr=null;
int ch=0;
fr=new FileReader("demo.txt");
//read():一次读一个字符,而且会自动往下读
// 如果返回不是-1,则可以循环
while((ch=fr.read())!=-1)//令ch=fr.read();判断ch!=-1
{
System.out.print((char)ch);
}
fr.close();
}
}
7. 文件读取的第二种方式
使用read(char[])方法,
import java.io.*;
public class H_11IOReaderDemo2 {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("demo.txt");
// 定义一个字符串数组,用于存储读到的字符
//read(char[]) 返回的是读到的字符个数
char[] buf=new char[1024];//通常定义成1024的整数倍
int len=0;
while((len=fr.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));//转换成字符串
}
fr.close();
}
}
8. 文件的复制练习(两种方式)
9. 字符流缓冲区
BufferedWriter
BufferedReader
缓冲区是为了提高流的操作效率而出现的
所以在创建缓冲区之前,必须要现有流对象。
BufferedWriter特有方法
跨平台的换行符.newline();
BufferedReader的特有方法
一次读一行的方法readline,方便于对文本数据的获取。当返回null时,表示读到文件末尾
演示添加了缓冲区的复制程序
import java.io.*;
public class H_03BufferedCopy {
public static void main(String[] args) {
BufferedReader bufr=null;
BufferedWriter bufw=null;
try
{
bufr=new BufferedReader(new FileReader("H05_10ThisDemo.java"));
bufw=new BufferedWriter(new FileWriter("copy.txt"));
String line=null;
while((line=bufr.readLine())!=null)//bufr的特有方法,判断是否返回空
{
bufw.write(line);//line不会返回回车符等终止符
bufw.newLine();//bufw的特有方法,加入换行
bufw.flush();
}
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
}
}
}
10. 读取行号LineNumberReader
import java.io.*;
public class H_09LineNumberReader {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("Demo.txt");
LineNumberReader lnr=new LineNumberReader(fr);
String line=null;//功能相同,增加了行号显示
while((line=lnr.readLine())!=null)
{
System.out.println(lnr.getLineNumber()+line);
}
lnr.close();
}
}
- java笔记22 IO流1(字符流及缓冲区)
- Java IO 字符流 缓冲区
- java IO 二(字符流缓冲区)
- java IO 字符流之 Buffered缓冲区
- java IO操作(二)---字符流的缓冲区
- IO(IO概述、字符流以及缓冲区)
- IO技术(三)字符流和字符缓冲区
- IO流上:概述、字符流、缓冲区(java基础)
- java io流二-字符流输入输出缓冲区
- IO流上:概述、字符流、缓冲区(java基础)
- 『黑马程序员』---java--IO--字符流缓冲区
- java io 学习之三 字符流的缓冲区
- Java基础IO之二字符流缓冲区类
- java学校笔记(IO字符流)
- Java IO ---学习笔记(字符流)
- java笔记-io字符流
- Java中IO流(3)——字符流缓冲区(传智播客毕老师视频讲解)
- Java面向对象——IO流(字符流缓冲区)
- 北大OJ_1007题:DNA Sorting
- java 值传递 引用传递(又叫地址传递,对象传递)
- 【少年の轨迹】cocos2d-x3.0中LayerColor的锚点的修改
- PHP类与对象,构造函数和析构函数,加上this绑定详解
- Mysql的一条SQL优化(一)
- java笔记22 IO流1(字符流及缓冲区)
- 【龙书答案】第三章解析(未完成)
- 解决升级Xcode6后插件不能用的问题
- 学习笔记:axure 高级教程 2 复选框(添加判断条件)
- 欢迎使用CSDN-markdown编辑器
- 从Code Review 谈如何做技术
- 内部排序(四)归并排序
- 文章标题
- 基于暗通道的图像去雾