流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。


Java输入输出流可以实现对数据的输入输出,笔者认为,输入输出流重要的应用在于对文件的读写!
本文总结了两类字符类型文件的读写方法,前者实现过程较为简单,后者实现过程环环相扣。

一、键盘输入数据并存入文件

以通过键盘输入学生信息,用PrintWriter写入文本文件中为例,介绍PrintWriter对象的写文件操作。

package P1;import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;public class T1 {/*键盘输入数据,用PrintWriter写入文本文件中*/public static void main(String[] args) throws FileNotFoundException {File f=new File("1.txt");Scanner in=new Scanner(System.in);PrintWriter pw=new PrintWriter(f);String head="姓名"+'\t'+"数学"+'\t'+"物理"+'\t'+"化学";pw.println(head);int sx,wl,hx;String xm;int cnt=0,i=1;System.out.println("请输入学生数据:");while(i!=0) {System.out.println("请依次输入姓名和数学、物理、化学成绩:");xm=in.next();sx=in.nextInt();wl=in.nextInt();hx=in.nextInt();pw.println(xm+'\t'+sx+'\t'+wl+'\t'+hx);cnt++;if(cnt==4) break;}//关闭流pw.close();in.close();}
}

文件内容:

二、处理字符类型文件(使用Scanner、PrintWriter)

以用Scanner读取已保存的文件,用PrintWriter将已有数据写入新文件中为例,介绍字符类型文件读写的实现过程

package P1;
import java.io.*;
import java.util.Scanner;
public class T3 {/*处理字符类型文件:用Scanner读文件,PrintWriter写文件*/public static void main(String[] args) throws FileNotFoundException {File f1=new File("1.txt");File f2=new File("2.txt");   Scanner fin=new Scanner(f1);PrintWriter pw=new PrintWriter(f2);String head="姓名"+'\t'+"数学"+'\t'+"物理"+'\t'+"化学";pw.println(head);int sx,wl,hx;String xm;int i=0;while(fin.hasNext()) {xm=fin.next();sx=fin.nextInt();wl=fin.nextInt();hx=fin.nextInt();pw.println(xm+'\t'+sx+'\t'+wl+'\t'+hx);i++;if(i==4) break;}pw.close();fin.close();}}

三、 处理字符流文件(使用缓冲流)

使用缓冲流处理字符流文件一般需要三步:

  1. 创建文件对象
  2. 通过文件对象创建文件读/写对象
  3. 通过文件读/写对象创建缓冲流对象
  4. 调用缓冲流对象的方法完成读/写操作
  5. 按照“后使用先关闭”的顺序依次关闭输入输出流

在文件行数未知的情况下,读取已存在的学生信息文件,输出文件内容并写入新文件的程序为例,介绍文件读写过程。

由于文件的行数未知,因此在读文件前需要计算出文件行数,便于后续循环实现文件的读写~

package Fileinout;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;public class Charstream {@SuppressWarnings({ "resource" })public static void main(String[] args) throws Exception  {/*通过缓冲流处理字符流文件(程序实现读文件、输出文件内容并保存到新文件中)*///读文件准备File f1=new File("fr.txt");FileReader fr=new FileReader(f1);BufferedReader br=new BufferedReader(fr);Scanner in=new Scanner(f1);System.out.println("文件名:"+f1.getName());//统计文本文件行数int count=0;while(br.readLine()!=null) count++; //一行一行读取,该行非空就计数System.out.println("文件行数:"+count);//写文件准备File f2=new File("fw.txt");FileWriter fw=new FileWriter(f2);BufferedWriter bw=new BufferedWriter(fw);//输出文件内容并另存为新文件System.out.println("-----------文件内容-----------");int i=0;while(i<count) {String str=in.nextLine();System.out.println(str);bw.write(str);bw.newLine();i++;}System.out.println("-----------------------------");//关闭文件流bw.close();fw.close();br.close();fr.close();in.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. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常
  2. echart 图谱_zrend echart 展示家庭图谱示例代码(类思维导图)
  3. 51nod1236 序列求和 V3
  4. 不同matlab版本所支持的gcc g+版本
  5. vb取消文本框的粘贴功能
  6. C# 3.0通过Linq、Lambda、匿名函数、代理函数实现数据查询
  7. java多继承_为什么 Java 不支持类多重继承?
  8. Maven - 配置setting.xml
  9. JavaWeb案例(MVC+MySQL+分页功能)+前后端分离
  10. OPENCV中滑动条的使用
  11. 迷茫的剑客----网站设计师! -----静水流深
  12. 家用无线路由器WDS初始化失败解决方法
  13. 2021开年巨作!JDBC连接数据库工具类!
  14. C语言编程-随机步法的实现
  15. 1.Android简介,Android Studio安装,创建运行Android程序
  16. 光标突然由竖线变成小黑块怎么解决?
  17. windows查询主机名命令
  18. 我谈阶梯博弈(Staircase Nim)
  19. CUDA安装失败-Nsight compute安装失败-如何测试CUDA是否安装成功?Reason: VS** was not found
  20. Springboot+Vue实现发表文章功能

热门文章

  1. Shiro面试题(二十道)
  2. mysql测评作业指导书_测评作业指导书
  3. java工程师的职业规划_Java工程师如何进行职业规划?
  4. decodeURI方法,中文乱码转换为汉字, 将url地址中的乱码转换为正常的
  5. 浅分享一下zzulioj刷题总结
  6. 一款简单好用的动画/游戏制作软件|源码编辑器|编程猫南宁体验中心
  7. Tensorflow saved_model.pb 文件转成 saved_model.pbtxt文件
  8. CLRC663寄存器说明中文版
  9. 计算机职业规划500字中专,计算机中专生职业规划范文500字中专生职业生涯规划书范文.doc...
  10. c语言如何命名开根号函数,c++开根号函数?