欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java的IO之字符流

程序员文章站 2024-03-04 15:23:29
...

1.为什么使用字符流

文件的字节流:

     FileInputStream:
     FileOutputStream:
------------------------------------
使用字节流操作汉字或特殊的符号语言的时候,容易乱码,建议使用字符流.
先有字节流,后有字符流,字符流是对字节流的补充.

使用记事本打开某个文件,可以看到内容的就是文本文件,否则可以理解二进制.
一般的,操作二进制文件(图片,音频,视频等)必须使用字节流.

一般的,操作文本文件使用字符流.

 如果不清楚是哪一类型文件,使用字节流.

------------------------------------
文件的字符流:
    FileReader:

    FileWriter:


字符输入流:

java的IO之字符流

字符输出流:

java的IO之字符流

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();
		}
	}
}