文件类型
IO读写按照类型可以分为,字符流和字节流
一个字符=两个字节 一个字节=八位
一个中文占两个字节(GBK编码下)
一个中文占3or4个字节(UTF-8编码下)
1.纯文本类型
纯文本(TXT)读写使用,字符流。
字符流一般用来读取纯文本文件,一次读取两个字节。
字符流(Char)可以直接读取中文不会乱码。但不能使用字符流读取别的格式内容。例如图片,MP4。
字符流有缓冲区。
在Reader
/Writer
中单向流动
2.其他
字节流(Baty)可以读取任何格式文件。
字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。
在InputStream
/OutputStream
中单向流动
字节流没有缓冲区。缓冲字节流效率会提升比较大。
IO对象
1.字节流
- InputStream
- OutputStream
public class Main2 {
public static void main(String[] args) {
try {
InputStream is = new FileInputStream("C:\\Users\\yaya\\Desktop\\a.png");
OutputStream os = new FileOutputStream("C:\\Users\\yaya\\Desktop\\a_copy.png");
int len = 0;
byte[] bytes = new byte[1024];
while ((len = is.read(bytes)) != -1) {
os.write(bytes);
}
is.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.字符流
- Reader
public class Main {
public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("C:\\Users\\yaya\\Desktop\\新建文本文档.txt");
int char_;
StringBuilder str = new StringBuilder();
//一个一个char读
while ((char_ = fileReader.read()) != -1) {
str.append((char) char_);
}
System.out.println(str.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
- Writer