Java对文件的读写操作方法


Posted in Java/Android onApril 29, 2022

java的IO

Java程序允许通过流的方式与输入输出设备进行数据传输。Java中的流都在java.io包中,称为IO(输入输出)流。IO流按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同,又可以分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据,在IO包中,字节流的输入输出分别用java.InputStream和java.io.OutputStream表示,字符流的输入输出分别用java.io.Reader和java.io.Writer表示。

字节流

在计算机中,无论是文本,图片,音频还是视频,所有的文件都是以二进制的方式存在的,字节流是程序中最常用的流,根据数据的传输方向分为字节输入流和字节输出流,在JDK中,提供了两个抽象类InputStream和OutputStream,他们是字节流的顶级父类,所有的字节输入流都继承OutputStream.

InputStream的常用方法

 int read()//从输入流中读取一个八位的字节,并把它转换为0~255之间的整数,并返回这一整数
 int read(byte[]b)//从输入流读取若干个字节,把它们保存到参数b指定的字节数组中,返回的整数表四读取字节的数目
 int read(byte[]b,int off,int len)//从输入流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目
 void close()//关闭此输入流并释放与该流关联的所有系统资源 

OutputStream的常用方法

 void write(int b)//向输出流写入一个字节
 void write(byte[]b)//把参数b指定的字节数组的所有字节写到输出流
 void write(byte[]b,int off,int len)//将指定的byte数组中从偏移量off开始的len个字节写入输出流
 void flush()//刷新此输出流并强制手写所有的缓冲的输出字节
 void close()//关闭此输出流并释放与此流相关的所有系统资源

flush()方法用来将当前输出流缓冲区(通常是字节数组中)的数据强制写入目标设备,此过程称为刷新。InputStream和OutputStream这两个类虽然提供了一些读写数据有关的方法,但是这两个类都是抽象类,不能被实例化。

字节流读写文件

由于计算机中的数据基本都保存在硬盘的文件中,在操作文件时,从文件中读取数据并将数据写入文件,FileInputStream和File Output Stream是进行读写操作的两个类。由于从文件中读取数据是重复的操作,因此需要通过循环语句来实现数据的持续读取。

package IO;
 import java.io.FileInputStream;
 public class Li01 {
     public static void main(String[] args) throws Exception{
         FileInputStream in=new FileInputStream("test.txt");
         int b=0;
         while(true){
             b=in.read();
             if(b==-1){
                 break;
             }
             System.out.print(b+" ");
         }
         in.close();
     }
 }

演示结果

Java对文件的读写操作方法

之所以输出数字是因为硬盘上面的文件都是以字节的形式存在的,在进行读取文件数据时,必须保证文件在相应目录存在并且是可读的。

如何将数据写入到文件中

package IO;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 public class Li02 {
     public static void main(String[] args) throws Exception{
         OutputStream out=new FileOutputStream("example1.txt");
         String str="好好学习,天天向上!";
         byte[]b=str.getBytes(StandardCharsets.UTF_8);
         for(int i=0;i<b.length;i++){
             out.write(b[i]);
         }
         out.close();
     }
 }

Java对文件的读写操作方法

通过FileOutputStream写数据时,自动创建了文件example1.txt,并将数据写入文件,如果向已存在文件中写入内容,首先该文件的内容会被清空,然后再写入新的数据,如果想要在已存在的文件后追加内容,可以在文件名后面加个boolean值并设置为true。

package IO;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 public class Li02 {
     public static void main(String[] args) throws Exception{
         OutputStream out=new FileOutputStream("example1.txt",true);
         String str="好好学习,天天向上!";
         byte[]b=str.getBytes(StandardCharsets.UTF_8);
         for(int i=0;i<b.length;i++){
             out.write(b[i]);
         }
         out.close();
     }
 }

Java对文件的读写操作方法 

到此这篇关于Java详细讲解文件的读写操作方法的文章就介绍到这了!


Tags in this post...

Java/Android 相关文章推荐
分享一些Java的常用工具
Jun 11 Java/Android
Java数据结构之链表相关知识总结
Jun 18 Java/Android
分析ZooKeeper分布式锁的实现
Jun 30 Java/Android
java中用float时,数字后面加f,这样是为什么你知道吗
Sep 04 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
Sep 25 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
Spring Boot 底层原理基础深度解析
Apr 03 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Java设计模式中的命令模式
Apr 28 #Java/Android
Android开发之底部导航栏的快速实现
Apr 28 #Java/Android
Java8 CompletableFuture 异步回调
Apr 28 #Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
Apr 28 #Java/Android
Java 异步任务计算FutureTask
Apr 28 #Java/Android
带你了解Java中的ForkJoin
Android 界面一键变灰 深色主题工具类
You might like
如何在PHP程序中防止盗链
2008/04/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
用JS生成UUID的方法实例
2016/03/30 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python列表操作使用示例分享
2014/02/21 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
Django实现自定义404,500页面教程
2017/03/26 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python中turtle库的使用实例
2019/09/09 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
python Scrapy框架原理解析
2021/01/04 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
爱情保证书范文
2014/02/01 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
明确岗位职责
2015/02/14 职场文书
教师个人自我评价
2015/03/04 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
纪录片信仰观后感
2015/06/08 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android