第一种:字节流读取文本文件
1.字节输入流InputStream类
//创建一个文件输入流对象
//作用:打通硬盘和内存的通道 创建了一个和硬盘上文件绑定的文件流
FileInputStream fis=new FileInputStream("D:\\123.txt");
//创建缓存区大小是1k 承载1k数据的一个缓冲区 大家:就是内存中的一块区域 。
//主要是在内存和硬盘之间做数据交换的临时存储区
byte[]bytes=new byte[1024];
int date=0;
StringBuffer sb=new StringBuffer();
//文件没有读取完毕,下次需要继续读取
while((date=fis.read(bytes))!=-1){
//没读取一次,将读取到的字节内容,转成字符串
String temp=new String(bytes,0,date);
//读取到缓存区中的有效字节数,转成字符串
sb.append(temp);
System.out.println("======有效字节======:"+date);
}
System.out.println(sb.toString());
fis.close();//关闭流
2.字节输出流OutputStream类
1 //构建一个文件输出流对象
2 FileOutputStream fos=new FileOutputStream("D:\\123.txt");
3 //利用文件输出流的方法把数据写入文本文件中
4 String temp="123456789";
5 byte[]bytes=temp.getBytes();
6 fos.write(bytes);//利用write方法将数据写入文件中
7 fos.close();//关闭流
8 System.out.println("写入成功!");
第二种:字符流 char FileReader FileWriter
在不同的操作系统和不同的编码方式下 char和比byte之间的关系不是固定的
一般认为:gbk/gb2312 ,2个byte
utf-8 3个byte
1 FileWriter fw=new FileWriter("D:\\123.txt");
2 fw.write("啦啦啦啦啦啦啦啦啦");
3 fw.close();
4 System.out.println("写入成功!");
5
第三种 :带缓冲区的字符读取和写入方案
BufferedReader BufferedWriter缓存区 存储的数据默认是1024byte
1 public static void main(String[] args) throws Exception {
2 //读取
3 FileReader fr=new FileReader("D:\\123.txt");
4 BufferedReader br=new BufferedReader(fr);
5 String line=br.readLine();//读取一行数据
6 while(line!=null){
7 System.out.println(line);
8 line=br.readLine();
9 }
10 br.close();
11 fr.close();
12
13
14 //写入
15 FileWriter fw=new FileWriter("D:\\123.txt");
16 BufferedWriter bw=new BufferedWriter(fw);
17 bw.write("\r\n噜噜噜噜噜");
18 bw.newLine();
19 bw.write("乐乐乐乐乐乐乐乐");
20 bw.close();
21 fw.close();
22 System.out.println("写入成功!");
23 }
24
25 }
第四种:二进制方式的读取和写入方案 DataInputStream DataOutputStream
1 public static void main(String[] args) throws Exception {
2 InputStream is=new FileInputStream("D:\\123.jfif");
3 DataInputStream dis=new DataInputStream(is);
4
5 OutputStream os=new FileOutputStream("F:\\456.jfif");
6 DataOutputStream oos=new DataOutputStream(os);
7 byte[]bytes=new byte[1024];
8 int data=0;
9 while((data=dis.read(bytes))!=-1){
10 oos.write(bytes,0,data);
11 }
12 oos.close();
13 dis.close();
14 os.close();
15 is.close();
16 System.out.println("212122122");
17
18 }