博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 文件IO写入读取四种方法
阅读量:4624 次
发布时间:2019-06-09

本文共 2205 字,大约阅读时间需要 7 分钟。

第一种:字节流 FileInputStream  FileOutputStream

 1.1 读取操作

//先创建一个和硬盘连接的流(打通硬盘和内存的通道) FileInputStream fis = new FileInputStream("D:\\Demo.txt"); //创建缓存区大小是1k byte[] bytes = new byte[1024]; int data = 0; //存储有效字节数 StringBuffer sb = new StringBuffer(); //由于文件大小通常远远大于缓冲区大小,所以要循环读取 while((data = fis.read(bytes)) != -1){//返回-1则文件读取完毕,停止循环读取   String temp=new String(bytes,0,data);//读取缓冲区的字节数,转换成字符串   sb.append(temp);   System.out.printlb("====有效字节数===="+data); } System.out.printlb(sb.toString()); //关闭流 fis.close();

1.2 写入操作

//创建一个读取文件的流 FileOutputStream fos = new FileOutputStream("E:\\Demo.txt"); String temp = "海内存知己,天涯若比邻。"; //把字符串分解成字节,填到字节数组中 byte[] bytes = temp.getBytes(); //写入到指定路径,没有则创建文件 fos.write(bytes); //关闭流 fos.close(); System.out.println("写入成功!");

第二种:字符流 char   FileReader FileWriter

tips:在不同操作系统和编码方式下,char和byte之间的关系不是固定的

       一般认为:gbk/gb2312     2个byte

       utf-8                3个byte

2.1  读取操作

Reader fr = new FileReader("E:\\Demo.txt");char ch[] = new char[1024];StringBuffer sbf = new StringBuffer();int length = fr.read(ch);while (length != -1) {  sbf.append(ch);  length = fr.read();}System.out.println(sbf.toString());fr.close();

2.2  写入操作

Writer fr = new FileWriter("D:\\Demo.txt"); fr.write("有朋自远方来,不亦乐乎"); fr.close();

 

第三种:带缓冲区的字符读取和写入方案  

                      BufferedReader

      BufferedWriter  缓冲区  存储的数据量默认是1024byte

3.1  读取操作

Reader fr = new FileReader("D:\\Demo.txt");

BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
  System.out.println(line);
  line = br.readLine();
}
br.close();
fw.close();

3.2  写入操作

  Writer fw = new FileWriter("D:\\Demo.txt",true);//true 为连续追加

  BufferedWriter bw = new BufferedWriter(fw);
  bw.write("学而时习之,不亦説乎");
  bw.close();
  fw.close();

 

 

第四种:二进制方式的读取和写入方案

      DataInputStream

      DataOutputStream

       读写操作:复制粘贴

InputStream is = new FileInputStream("E:\\春暖花开.jpg");

DataInputStream dis = new DataInputStream(is);

OutputStream ops = new FileOutputStream("D:\\春暖花开.jpg");

DataOutputStream dos = new DataOutputStream(ops);

byte[] bytes = new byte[1024];

int date = 0;
while ((date = dis.read(bytes)) != -1) {
dos.write(bytes,0,date);
}
dos.close();
ops.close();
dis.close();
is.close();
System.out.println("复制成功");

 

转载于:https://www.cnblogs.com/chenyang520/p/9068227.html

你可能感兴趣的文章
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
Git的安装和使用教程详解
查看>>
lsof命令详解
查看>>
父窗口与子窗口之间的传值
查看>>
常用Maven命令
查看>>
j2ee爬坑行之二 servlet
查看>>
vue+element-ui实现表格checkbox单选
查看>>
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>
Restful levels
查看>>
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>