常用IO流类别
|─字符流
| |─Writer 写入流
| | |─BufferedWriter 字符写入流缓冲区
| | └─OutputStreamWriter 字符转换字节流
| | └-FileWriter 字符文件写入流
| |
| └─Reader 读取流
| |-BufferedReader 字符读取流缓冲区
| └─InputStreamReader 字节转换字符流
| └─FileReader 字符文件读取流
|
|─字节流
| |─InputStream 输入流
| | |─ FileInputStream 文件输入流
| | └─ FilterInputStream
| | |─ DataInputStream 数据输入流
| | └─ BufferedInputStream 字节输入流缓冲区
| |
| └─OutputStream 输出流
| └─FilterOutputStream
| |─DataOutputStream 数据字节输出流
| └─BufferedOutputStream 字节输出流缓冲区
└─File 类
区别:字符流和字节流
- 读写单位不同:
字节流:字节(8bit)
字符流:字符(根据码表映射字符,一次可能读多个字节)
- 处理对象不同:
字节流:能处理所有类型的数据(如图片、视频、音频等)
字符流:只能处理字符类型的数据
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
一、文件字节流
FileInputStream 文件字节输入流
FileOutputStream 文件字节输出流
输入流实例:
package fileStreamControl;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
//字节输入流
public class fileInput {
public static void main(String[] args) throws IOException{
InputStream ins = new FileInputStream("D:/hello/hello.txt");
int i;
while((i=ins.read())!=-1){
System.out.print((char)i);
}
ins.close();
}
}
输出流实例:
package fileStreamControl;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
//字节输出流
public class fileOutput {
public static void main(String[] args) throws IOException{
InputStream ins = new FileInputStream("D:/hello/hello.txt");
OutputStream out = new FileOutputStream("D:/hello/out.txt");
int i;
String str = "写出hello.txt中的字节: ";
out.write(str.getBytes());
while((i=ins.read())!=-1){
System.out.print((char)i);
out.write(i);
}
out.close();
ins.close();
anotherOut();
}
//另外一种输出流方式
public static void anotherOut() throws IOException{
File f = new File("D:/hello/out.txt");
Writer out = null;
//利用 OutputStreamWriter写入文件
out = new OutputStreamWriter(new FileOutputStream(f,true)); // true 表示可在文件末尾写,即不会重新写入
out.write("另外一种输出方式 : another outputStreamWriter~~~~");
out.close();
}
}
暂时写到这...