java的IO之字符流
程序员文章站
2024-03-04 15:23:29
...
1.为什么使用字符流
文件的字节流:
FileInputStream:FileOutputStream:
------------------------------------
使用字节流操作汉字或特殊的符号语言的时候,容易乱码,建议使用字符流.
先有字节流,后有字符流,字符流是对字节流的补充.
使用记事本打开某个文件,可以看到内容的就是文本文件,否则可以理解二进制.
一般的,操作二进制文件(图片,音频,视频等)必须使用字节流.
一般的,操作文本文件使用字符流.
如果不清楚是哪一类型文件,使用字节流.
------------------------------------文件的字符流:
FileReader:
FileWriter:
字符输入流:
字符输出流:
flush(刷新)操作,输出流中都有flush方法:
计算机访问外部设备(磁盘文件),要比直接访问内存慢很多,如果每次write都要直接写出到磁盘文件中,CPU都会花更多的时间,此时我们可以准备一个内存缓冲区,程序每次write方法都是直接写到内存缓冲区中,当内存缓冲区满后,系统才把缓冲区内容一次性写出给磁盘文件.
使用缓冲区的好处:
1:提高CPU使用率.
2:有机会回滚写入的数据.
对于字节流,flush方法不是都有作用(部分字节流才有作用,缓冲流),对于字符流都起作用.
如果我们调用close方法,系统在关闭资源前,会先调用flush方法.
-------------------------------------------------------
操作系统使用-1表示磁盘文件的结尾标记.
缓冲区大小一般使用容量整数倍,可以提高IO性能.
2.文件的拷贝
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
public class IODemo2 {
public static void main(String[] args) {
//这里我使用了JDK新特性:自动关闭资源,将资源的创建放到try语句的()中,资源使用完毕之后会自动关闭,不用我们手动释放
try
(
//创建源
Reader reader = new FileReader("file.txt");
//创建目标
Writer writer = new FileWriter("fileCopy.txt");
)
{
char[] ch = new char[1024];
int len = 0;
while ((len=reader.read(ch))!=-1) {
writer.write(ch, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上一篇: JAVA中的IO流
下一篇: java IO之字符流