JAVA文件写入写出
IO流中的IO是Input,Output,输入和输出的意思,是用来处理设备与设备之间的数据传输的,不仅能处理内部设备(比如CPU、GPU、内存),还能处理外部设备(比如手机和PC,客户端与服务器)。
在Java中定义数据按照流向,分为输入流和输出流。
首先我们来了解输入流,从字面上就很容易理解,凡是从外部流入的数据都可以通过输入流来处理。比如读取文件。
输出流,就表示从内部流出的数据,比如:我们编辑了一个文本文件,当我们按下ctrl+s的时候,就将该文件从内存保存到了硬盘,这就是一个将数据从内存中输出到硬盘的过程。
除了输出和输入流,流按照操作的数据还分为:字节流和字符流。
复制一个文本文件,现在我们就来将D
盘下hello.txt
文件复制到E
盘下,并重命名为abc.txt
:
FileReader fr = new FileReader("D://hello.txt"); //定义FileReader读取文件
int len = 0; //每次读取的字符数量
char[] cbuf = new char[1024]; //每次读取数据的缓冲区
FileWriter fw = new FileWriter("E://abc.txt"); //定义FileWriter写文件
while((len = fr.read(cbuf)) != -1){
fw.write(cbuf,0,len);
}
fw.close(); //释放资源 刷新缓冲区
fr.close();
如果要对非文本类型的文件进行操作,应该怎么做呢?这个时候字符流还能不能派上用场呢?
答案是否定的,字符流只适用于操作字符类型的文件,不能操作非字符类型的。
所以这个时候应该用什么来操作呢?字节流
字节流来操作非字符类文件。
使用字节流来复制一个图片文件
FileInputStream fs = new FileInputStream("D://user.jpg"); //定义文件输入流读取文件信息
FileOutputStream fos = new FileOutputStream("E://new.jpg");//定义文件输出流写文件
int len = 0; //每次读取数据的长度
byte[] bys = new byte[1024]; //数据缓冲区
while( (len = fs.read(bys)) != -1){
fos.write(bys, 0, len);
}
//释放资源 刷新缓冲区
fs.close();
fos.close();
字节流既然可以用来读取非字符构成的文件,那可以读取字符类型的文件吗? 答案是可以的,字节流可以操作所有类型的文件,因为计算机中的数据都是以字节的方式存储的;
既然字节流可以用来操作所有的文件,那还要字符流干啥咧? 因为字符流操作字符类型的数据和文件要比字节流快很多。
使用BufferedReader
读取字符文件的速度要比我们之前使用的字节流和FileReader快很多,示例代码:
BufferedReader bf = new BufferedReader(new FileReader("D://hello.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("D://abc.txt"));
String str = "";
while( (str = bf.readLine()) != null){
writer.write(str);
}
bf.close();
writer.close();
JAVA文件写入写出相关推荐
- JAVA文件写入FileWriter
JAVA文件写入FileWriter 导包import java.io.FileWriter创建构造方法public FileWrite(String filename),参数是文件的路径及文件名(默 ...
- 一文搞定C#关于NPOI类库的使用读写Excel以及io流文件的写出
一文搞定C#关于NPOI类库的使用读写Excel以及io流文件的写出 今天我们使用NPOI类库读写xlsx文件, 最终实现的效果如图所示 从太平洋官网下载相应的类库,大概4~5MB,不要从github ...
- 在一个java文件中写多个类
参考文章地址: 一. 在一个java文件中写多个类 http://blog.csdn.net/u013614319/article/details/51510515 二.一个java文件中多个类 ...
- Java Stream如何写出高雅又装*的代码
Java Stream如何写出高雅又装*的代码 一. 冷静分析 二. 直接开装 2.1 初级炫 2.2 普通炫 2.3 高级炫 2.4 再炫一波 拿到当前key与对应的数量 2.5 Map Reduc ...
- java写入写出文件的原理_Java文件断点续传实现原理解析
一.作用: 随机流(RandomAccessFile)不属于IO流,支持对文件的读取和写入随机访问. 二.随机访问文件原理: 首先把随机访问的文件对象看作存储在文件系统中的一个大型 byte 数组,然 ...
- java文件写入不覆盖_java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法...
java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...
- pandas合并文件夹下带有多个sheet的xlxs文件并写出csv文件
之前写过用普通python库来合并文件,现在加强读写速度用pandas库来执行. 如果只读一个多sheet的excel文件,见代码1 代码1: #!/usr/bin/python3 # -*- cod ...
- Java编程中写出好代码的建议
最近在做应用的性能优化,在review代码的过程中积累了一些规则和经验.做到这些规则的目的很简单,就是写出"优美"的代码来. 1.注释尽可能全面 对于方法的注释应该包含详细的入参和 ...
- Java编程中写出好代码的建议(转发)
最近在做应用的性能优化,在review代码的过程中积累了一些规则和经验.做到这些规则的目的很简单,就是写出"优美"的代码来. 1.注释尽可能全面 对于方法的注释应该包含详细的入参和 ...
最新文章
- mysql通用分页_MySQL海量数据的通用存储过程分页代码
- Javascript:阻止浏览器默认右键事件,并显示定制内容
- node.js中exports与module.exports的区别分析
- 我见过的最漂亮代码---通过删除代码来实现功能的提升
- php mysql数据库同步_实现MySQL数据库同步实例演示_MySQL
- The dialect was not set. Set the property hibernate.dialect
- android人物移动设计软件,实现在SurfaceView上移动游戏人物
- 【文本摘要】BottleSum——文本摘要论文系列解读
- Mysql 查询列名
- 女儿傻 女儿悲 2014-2-23
- 搭建web项目常见错误
- 轻量级深度神经网络推理引擎——阿里巴巴的 MNN
- 微信公众号如何绑定运营者的微信号
- 合工大OJ 1359
- wamp3.1.4下载及WampServer下增加多版本PHP
- 使用极狐GitLab限制开发者使用CI/CD的权限,三种方案
- 关于SOTIF预期功能安全的理解
- mysql更改date为ym_关于日期格式设置及转换
- Java调用linux终端命令
- 为什么我们认为GPT是一个技术爆炸