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 相关文章推荐
SpringBoot生成License的实现示例
Jun 16 Java/Android
java基础——多线程
Jul 03 Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
Jan 22 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
Feb 28 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
Android自定义scrollview实现回弹效果
Apr 01 Java/Android
springboot应用服务启动事件的监听实现
Apr 06 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
spring IOC容器的Bean管理XML自动装配过程
May 30 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
OpenFeign实现远程调用
Aug 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
PHP 万年历实现代码
2012/10/18 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
Vue 事件处理操作实例详解
2019/03/05 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
python如何统计序列中元素
2020/07/31 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Tensorflow 多线程设置方式
2020/02/06 Python
简单了解django文件下载方式
2020/02/10 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
法律专业自我鉴定
2013/10/03 职场文书
工程管理英文求职信
2014/03/18 职场文书
出生证明公证书
2014/04/09 职场文书
新兵入伍心得体会
2014/09/04 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
奖励通知
2015/04/22 职场文书
为Centos安装指定版本的Docker
2022/04/01 Servers