1、IO流
①输入流和输出流
是相对于内存设备而言。
输入流:把硬盘设备数据读出放到内存设备中。
输出流:吧内存设备的数据写到硬盘设备中。
② 字节流:
用于处理字节的数据流对象。
两个顶层父类: InputStream ;OutmpuStream。这些体系的子类都以父类名作为后缀,而且子类名的前缀就是该对象的功能。
③ 字符流
Unicode 码表:统筹各国的文字。
字符流:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,然后再对这个文字进行操作。字符流=字节流+编码表。
两个顶层父类:Reader;Writer;这些体系的子类都以父类名作为后缀,而且子类名的前缀就是该对象的功能。
2、FileWrite ——字符流输出对象
是一个往文件中写入字符数据的字符输出流对象。既然是往一个文件中写入文字的数据,那么在创建对象时,就必须明确该文件的存储位置。
事例:
FileWriter fw=new FileWriter(“demo.txt ”); //若文件存在,覆盖;不存在,会创建。但是此时的数据是被写入到了临时存储缓冲区中。
Fw.flush(); // 立即进行写入的硬盘,刷新缓冲区中的数据到目的地。
Fw.close(); // 关闭流,关闭资源。
3、IO异常的处理
FileWriter fw=null;
try {
fw= new FileWriter("demo.txt");
fw.write("12");
} catch (IOException e) {
}finally{
if(fw!=null){ // 若发生FileNotFoundException异常,此时fw还是null,使用fw.close()会发生异常,所以要先判断。
try {
fw.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
4、FileReader ——字符流写入对象
① 读取方式一
//1、创建读取字符数据的流对象;抛出异常
FileReader fr= new FileReader("demo.txt");
int ch=0;
while((ch=fr.read())!=-1){ //2、用read方法一次读取一个字符
System.out.println((char)ch);
}
② 读取方式二
//1、创建读取字符数据的流对象;抛出异常
FileReader fr= new FileReader("demo.txt");
char[] buf=new char[1024]; //2、建立缓冲区
int len=0;
while((len=fr.read(buf))!=-1){ // 3、每次都读取缓冲区大小的数据,但返回的是实际读取个数。
System.out.print(new String(buf,0,len));
}
|