java io流学习——高速缓冲流_小小印z的博客-爱代码爱编程
(学习资料来自三更草堂)
1.1 概述
对硬盘进行数据的读取相比于从内存中存取数据要慢的多。所以JDK为我们提供了高效缓冲流来提高我们IO流的效率。内部原理就是借助内存的缓冲区来减少硬盘IO的次数,提高性能。
1.2 分类
-
字节流
输入流
BufferedInputStream
输出流
BufferedOutputStream
-
字符流
输入流
BufferedReader
输出流
BufferedWriter
public BufferedInputStream(InputStream in)
public BufferedOutputStream(OutputStream out)
public BufferedReader(Reader in)
public BufferedWriter(Writer out)
读数据:
1.3 特有的方法
类 | 方法 | 作用 |
---|---|---|
BufferedReader | public String readLine() throws IOException | 一次读取一行数据,读到的内容不包含换行符,读到了文件末尾返回null。 |
BufferedWriter | public void newLine() throws IOException | 写入一个换行符,会根据系统变化 |
循环读取:
写入换行符:
实现文件复制:
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("D:\\学习笔记\\JAVA\\JavaSE进阶\\io-test\\3.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\学习笔记\\JAVA\\JavaSE进阶\\io-test\\4.txt", true));
String line;
//一行行读
while ((line = br.readLine()) != null) {
bw.write(line);
//写入换行符
bw.newLine();
}
//释放资源
br.close();
bw.close();
}
复制结果:
2. 转换流
2.1 概述
如果我们需要把字节流转换成字符流,可以使用转换流来实现转换。
2.2 分类
流类型 | 类 |
---|---|
输入流 | InputStreamReader |
输出流 | OutputStreamWriter |
2.2 转换流的使用
当我们需要把字节流转换成字符流时直接使用转换流的构造方法进行转换即可。
public InputStreamReader(InputStream in)
public InputStreamReader(InputStream in, String charsetName)
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out, String charsetName)
示例:
public static void main(String[] args) throws FileNotFoundException {
//字节流对象
FileInputStream fis = new FileInputStream("C:\\Users\\root\\Desktop\\test\\汉字.txt");
FileOutputStream fos = new FileOutputStream("C:\\Users\\root\\Desktop\\test\\转换流测试.txt");
//转换成字符流
InputStreamReader isr = new InputStreamReader(fis);
OutputStreamWriter osw = new OutputStreamWriter(fos);
}