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中Collection的一些常用方法总结
Jun 13 Java/Android
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
图解排序算法之希尔排序Java实现
Jun 26 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
Aug 02 Java/Android
Java Spring 控制反转(IOC)容器详解
Oct 05 Java/Android
Java中的随机数Random
Mar 17 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
Java 多态分析
Apr 26 Java/Android
Mybatis-plus配置分页插件返回统一结果集
Jun 21 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 eval函数用法总结
2012/10/31 PHP
php url路由入门实例
2014/04/23 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
javascript网页关键字高亮代码
2008/07/30 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
菊花转动的jquery加载动画效果
2018/08/19 jQuery
vue 获取视频时长的实例代码
2019/08/20 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Python实现单词拼写检查
2015/04/25 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Servlet如何得到服务器的信息
2015/12/22 面试题
学生打架检讨书大全
2014/01/23 职场文书
售后服务承诺书
2014/03/26 职场文书
作风转变心得体会
2014/09/02 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2015年采购员工作总结
2015/04/27 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
暑期工社会实践报告
2015/07/13 职场文书
会议室使用管理制度
2015/08/06 职场文书
安全教育日主题班会
2015/08/13 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python