相对于C++中的文件流操作,Java可以直接调用系统库中提供的方法,简单的多。

读操作:

代码:

准备代码:(由文件名获取BufferrdReader对象)

String file_name = "test.txt";    //String类型变量file_name的值为所读取的文件的文件名(包括后缀)
File file = new File(file_name);    //用String类型变量初始化一个File类对象
FileInputStream fis = new FileInputStream(file);    //用File类对象初始化一个FileInputStream对象
/*FileInputStream对象可用String类型初始化,亦可省略第二行代码,直接FileInputStream fis = new FileInputStream(file_name);*/
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);//最后得到BufferedReader类型对象br

读取代码:(通过调用BufferrdReader对象的方法进行文件读操作)

br.readLine();//从文件流中读取一行数据(读到回车"\r\n"为止),返回String类型
//可以通过System.out.println(br.readLine());在控制台查看读取的数据
//br.readLine()不包括回车字符"\r\n",对于只有回车的一行,br.readLine()==""(引号内部为空)
//由于br.readLine()的返回值为String类型,通过Java系统库提供的强大的String方法可以对读取的一行数据
//进行格式化拆分、整理(如按空格隔开数据,可用String类型的split方法将数据拆分存入String类型数组)br.close();//当文件读取完毕时,务必写入该代码,确保文件正常关闭

解释:

读操作是从文件开始的,Java提供了File类,可用String类型的文件名作为形参初始化File对象,如File file=new File(“test.txt”),但这个File类对象只能访问这个文件的外部特性,即查看文件属性时能看到的东西,不能查看文件内的信息。

在C++中我们使用文件流来读写文件,Java也是如此。Java提供了FileInputStream类(译作“文件输入流”)(继承自InputStream类),通过FileInputStream fis=new FileInputStream(file),调用形参为File对象的构造函数(也有形参为String的构造函数,直接输入需要读写的文件名亦可)。之后fis变成输入流对象,通过调用fis的方法可以发现,read(byte [])方法可以从文件中读取一个byte类型数组的字节,并写入该数组中。

通过FileInputStream对象,可以对文件进行字节读取

这样虽然可以读取文件,但是还有很多问题。对于Ascii码中的字符,字节读取得到的是对应的int数组,转换成Ascii码较为麻烦。对于中文等一个字节表示不了的文字,问题更多。我们需要对文件进行字符读取,将文件内的信息转化为char[]或String类型。

我们将用到转化类InputStreamReader类(继承自Reader类),即将字节输入流转化为字符输入流。通过InputStreamReader isr=new InputStreamReader(fis),用FileInputStream对象初始化InputStreamReader对象。isr的方法即可将文件数据读入char[]数组中。

最后我们再用InputStreamReader对象初始化BufferedReader对象,即BufferedReader br=new BufferedReader(isr),Buffered的意思是“缓冲的”,意义是在内存中开辟一个缓冲区,先将文件数据读入缓冲区,再从缓冲区中将数据读入Java,目的是使读写速度加快。BufferedReader对象的方法比InputStreamReader对象的方法多了一个很重要的readLine方法,它将所读的一行数据(到回车为止)以String类型的形式返回。由于Java提供了很多String对象的方法,所以readLine方法对于数据的处理意义重大。

笔者在代码中强调了关闭文件对象的重要性,即br.close();

而前面声明的 FileInputStream类对象fis 和 InputStreamReader类对象isr 都有close方法,为什么不用关闭呢?

因为它们之间有嵌套关系:

BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(file_name))));

对最后生成的对象br调用close方法后,Java会自动调用生成该对象的其他对象的close方法。

写操作:

与读操作同理,只是将Input变Output、Reader变Writer

String file_name = "test.txt";
File file = new File(file_name);
FileOutputStream fos=new FileOutputStream(file);
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bw=new BufferedWriter(osw);
String str = "xxx";
bw.write(str);//将str中的字符写入文件(不自动回车)bw.newLine();//在文件中写入一个回车,可用bw.write("\r\n");代替bw.close();//关闭文件

[Java]Java文件读写相关推荐

  1. java大文件读写操作

    转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...

  2. 【Java】文件读写

    [Java]文件读写 FileInputStream类和FileOutputStream类 从文件读入全部数据 public static String readData(String filenam ...

  3. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...

  4. 讨论下 Java 流文件读写缓存大小设置的问题

    2019独角兽企业重金招聘Python工程师标准>>> 我们在 java 里面进行流文件处理的时候,一般会用到缓存,设置缓存的时候一般设置也是 byte[1024]的大小,考虑到现在 ...

  5. 【Java】文件读写和输入输出

    写在前面的话: 版权声明:本文为博主原创文章,转载请注明出处! 博主是一个小菜鸟,并且非常玻璃心!如果文中有什么问题,请友好地指出来,博主查证后会进行更正,啾咪~~ 每篇文章都是博主现阶段的理解,如果 ...

  6. java 往文件写值,java文件读写

    Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行 一次分析,归类,理清不同方法之间的异同点. 一.在 JDK 1.0 中,通常是用 InputStream &a ...

  7. java gui 读取文件夹_java Swing GUI 入门-文件读写器

    java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...

  8. java FileReader/FileWriter读写文件

    java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...

  9. Java之文件流操作的文件读写

    Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...

  10. java流与文件——读写二进制数据(DataOutput + DataInput)

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--读写二进制数据(DataOutput + DataInput)的相关知识: 0.2) ...

最新文章

  1. win8.1怎么安装iis
  2. 调用 fork 两次以避免僵死进程
  3. mysql与Json学习总结
  4. java语言简单代码_java语言编程如何实现一个最简单程序?
  5. RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
  6. java几点钟_实现 Java 本地缓存,该从这几点开始
  7. 《Cortex-M0权威指南》之Cortex-M0技术综述
  8. C语言指针实数组输入输出,C语言:回来两个数组中第一个元素的指针,并输出这个值...
  9. 最小生成树(hdu1233还是畅通工程)
  10. 从零开始搭建框架SSM+Redis+Mysql(一)之摘要
  11. Linux - grep命令详解
  12. 计算机不能打印pdf文档怎么办,pdf无法打印怎么处理_pdf文件无法打印的三种解决方法...
  13. 怎么缩小照片的kb大小?
  14. 成功之路散文连载之笨人论
  15. java输出英文字母_用JAVA编一个程序输出全部的英文字母
  16. html5遮罩层动画制作,纯css3图片点击弹出动画遮罩层效果
  17. Java代码判断字符串中是否含有表情
  18. ps中解决标点符号在行开头的问题
  19. M2 MacBookAir售价是多少 M2 MacBookAir配置如何
  20. 苹果好用计算机软件,别让你的苹果电脑再吃灰了,几款小众好用的软件推荐

热门文章

  1. oracle设置字符集为gbk,rac 环境下修改oracle数据库字符集为GBK
  2. 违背基本假设的几种情况——异方差性(R语言)
  3. Adaboost入门教程——最通俗易懂的原理介绍(图文实例)
  4. 全国计算机建模三等奖,青春榜样 | 吴昊 : 守得云开见月明
  5. 云服务器跟弹性云主机一样吗,什么是弹性云主机
  6. 循环神经网络RNN论文解读
  7. 将数字转换成千分位,千分位改成数字
  8. nginx 的超时设置
  9. nodejs 判断是文件夹还是文件
  10. 归纳数学常识提高运算速度