第一种:字节流 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= newStringBuffer();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("复制成功");

java io 缓存读取_Java 文件IO写入读取四种方法相关推荐

  1. java i o中文版_Java文件I/O的三种方法

    摘要:之前在面试中被问到过两次Java中文件读入输出怎么写,当时只记得一个大概,没有办法很清晰的说出一个条理,今天特地看出总结了一下这方面的内容,想要写出来给大家分享.首先文件读入输出流常用有三种:F ...

  2. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  3. php保存文件和下载文件到本地的四种方法

    php保存文件和下载文件到本地的四种方法   本文操作环境:windows7系统.PHP7.1版,DELLG3电脑   php保存文件的方法   PHP下载保存文件到本地   经常需要点击按钮,然后弹 ...

  4. java中三种方法_Java文件I/O的三种方法

    Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...

  5. java时间代码_java获取当前时间的四种方法代码实例

    这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一种:Date类 public class ...

  6. java list转set去重_Java中List去重的四种方法

    Java中List去重的四种方法 package com.lxz.test; import java.util.ArrayList; import java.util.HashSet; import ...

  7. 如何给电脑文件加密?分享四种方法!

    想要给文件设置加密,防止他人查看自己的文件,分享四种方法给电脑文件加密. 一:隐藏文件 如果不想给文件设置密码,我们可以将文件隐藏起来,这样设置之后,文件就不会再显示在文件夹里了,想要隐藏文件,我们只 ...

  8. java文件流读取_java 文件及流读取

    在Java语言的IO编程中,读取文件是分两个步骤:1.将文件中的数据转换为流,2.读取流内部的数据.其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用 ...

  9. java上传下载_Java文件上传与文件下载实现方法详解

    本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传 ...

最新文章

  1. python分别统计男女人数_python实现爬虫统计学校BBS男女比例(一)
  2. 获取生产订单的系统状态
  3. AI大神贾扬清确认将离开Facebook,加入阿里硅谷研究院
  4. discuz邮件设置PHP,Discuz!6.0—如何配置发送邮件的参数
  5. 三菱880彩铅和uni的区别_孟祥雷丨清华美院毕业,彩铅界的“冷军”(附彩铅教程哦!)...
  6. 【TensorFlow】通过两个简单的例子实现反向传播
  7. JVM虚拟机-Class文件之类索引、父类索引和接口索引集合
  8. 迁移Exchange Server 2003
  9. Java常用开发工具有哪些?
  10. 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
  11. 一道反序列化的CTF题分享
  12. 戴尔笔记本无法调节亮度怎么办?
  13. Java学习(二)---SE阶段回顾
  14. python 字典修改键(key)的方法
  15. 毕业设计-基于大数据的电影推荐系统-python
  16. ipvs命令~创建VS/DR模式集群
  17. 前端开发面试知识点大纲
  18. 线上抓娃娃方案的选型方法
  19. sql中like的所有用法
  20. 清华大学python吴萍答案_第732章 清华大学计算机系的扛把子

热门文章

  1. PHP新手上路(十)
  2. 2.2物理层传输介质
  3. Leetcode--144. 二叉树的前序遍历(迭代递归)
  4. Leetcode--120. 三角形最小路径和
  5. 知道接口地址 如何传数据_数据不知道如何可视化?一款工具推荐给大家
  6. python中set index_python中set基础应用
  7. 宝塔mysql data修改_宝塔一键修改mysql数据库存放路径,更改默认数据目录…
  8. html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注
  9. mysql调优_MYSQL企业常用架构与调优经验分享
  10. leetcode报错runtime error: reference binding to null pointer of type ‘std::vector<std::__cxx11::basic_