个人主页:Dawn黎明开始
系列专栏:Java
⭐每日一句:你能坚持到什么程度,决定你能达到什么高度欢迎大家关注点赞收藏⭐️留言
文章目录
一.字节缓冲流
前言
1.1字节缓冲流
1.1.1构造方法
1.1.2成员方法
1.1.3实例练习
1.2字符缓冲流
1.2.1构造方法
1.2.2成员方法
1.2.3实例练习
二.文件拷贝
2.1字节流文件拷贝
2.1.1基本字节流拷贝
2.1.2缓冲字节流拷贝
2.2字符流文件拷贝
2.2.1基本字符流拷贝
2.2.2缓冲字符流拷贝
三、I/O流与集合综合实例
3.1把ArrayList集合中的字符串数据存储到文本文件
3.1.1分析
3.1.2代码如下
3.2从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合
3.2.1分析
3.2.2代码如下
在代码中使用缓冲流(Buffered Streams)有许多好处,特别是在处理I/O操作时,它们可以显著提高性能和效率。缓冲流在底层通过缓冲区来减少对磁盘或网络的实际读写次数,从而提高了读写性能。相比于直接操作底层输入输出流,缓冲流可以减少频繁的磁盘或网络访问,提升整体的I/O性能。
(BufferedOutputStream)实例练习
代码如下
package BufferedOutputStreamDemo;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedOutputStreamDemo1 {
public static void main(String[] args) throws IOException {
// FileOutputStream fos=new FileOutputStream("a.txt",true);
// BufferedOutputStream bos = new BufferedOutputStream(fos);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
bos.write("java".getBytes());
bos.write("\n中国".getBytes());
bos.close();
}
}
(BufferedInputStream)实例练习
代码如下
package BufferedInputStreamDemo;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamDemo1 {
public static void main(String[] args) throws IOException {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("a.txt"));
byte [] bys=new byte[1024];
int len=0;
while((len=bis.read(bys))!=-1) {
String string=new String(bys,0,len);
System.out.print(string+"\t");
// System.out.print(new String(bys,0,len));
}
bis.close();
}
}
继承Writer和Reader类的成员方法
字符缓冲流的特殊方法:
BufferedWriter:
public void newLine():根据系统来决定换行符
BufferedReader:
public String readLine():一次读取一行数据
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
代码如下
package CopyDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileDemo5 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));
BufferedReader br=new BufferedReader(new FileReader("b.txt"));
String string=null;
while((string=br.readLine())!=null) {
bw.write(string);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
(一次读写一个字节)
package CopyDemo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo1 {
public static void main(String[] args) throws IOException {
// 封装数据源
FileInputStream fis = new FileInputStream("a.txt");
// 封装目的地
FileOutputStream fos = new FileOutputStream("b.txt");
//一次读写一个字节
int b = 0;
while ((b = fis.read()) != -1) {
fos.write(b);
}
// 释放资源(先关谁都行)
fos.close();
fis.close();
}
}
代码如下
(一次读写一个字节数组)
package CopyDemo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo1 {
public static void main(String[] args) throws IOException {
// 封装数据源
FileInputStream fis = new FileInputStream("a.txt");
// 封装目的地
FileOutputStream fos = new FileOutputStream("b.txt");
//一次读写一个字节
int b = 0;
while ((b = fis.read()) != -1) {
fos.write(b);
}
// 释放资源(先关谁都行)
fos.close();
fis.close();
}
}
(一次读写一个字节)
代码如下
package CopyDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo3 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));
int b=0;
while((b=bis.read())!=-1) {
bos.write(b);
}
bos.close();
bis.close();
}
}
(一次读写一个字节数组)
代码如下
package CopyDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo4 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));
byte[] bys=new byte[1024];
int len=0;
while((len=bis.read(bys))!=-1) {
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}
代码如下
package CopyDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileDemo5 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));
BufferedReader br=new BufferedReader(new FileReader("b.txt"));
String string=null;
while((string=br.readLine())!=null) {
bw.write(string);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
分析:
ArrayList集合里存储的是字符串。
遍历ArrayList集合,把数据获取到。
然后存储到文本文件中。
(文本文件说明使用字符流)
数据源:
ArrayList
-- 遍历得到每一个字符串数据 目的地:
a.txt -- FileWriter -- BufferedWriter
package CopyDemo;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class ArrayListToFileDemo {
public static void main(String[] args) throws IOException {
// 封装数据与(创建集合对象)
ArrayList array = new ArrayList();
array.add("hello");
array.add("world");
array.add("java");
// 封装目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
// 遍历集合
for (String s : array) {
// 写数据
bw.write(s);
bw.newLine();
bw.flush();
}
// 释放资源
bw.close();
}
}
分析:
通过题目的意思我们可以知道如下的一些内容,
数据源是一个文本文件。
目的地是一个集合。
而且元素是字符串。
数据源:
b.txt -- FileReader -- BufferedReader
目的地:
ArrayList
package CopyDemo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class FileToArrayListDemo {
public static void main(String[] args) throws IOException {
// 封装数据源
BufferedReader br = new BufferedReader(new FileReader("b.txt"));
// 封装目的地(创建集合对象)
ArrayList array = new ArrayList();
// 读取数据存储到集合中
String line = null;
while ((line = br.readLine()) != null) {
array.add(line);
}
// 释放资源
br.close();
// 遍历集合
for (String s : array) {
System.out.println(s);
}
}
}
建议大家亲自动手操作,学编程,多实践练习是提升编程技能的必经之路。欢迎大家在评论区进行讨论和指正