【Java】Java文件读写
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。
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();}}
三、 处理字符流文件(使用缓冲流)
使用缓冲流处理字符流文件一般需要三步:
- 创建文件对象
- 通过文件对象创建文件读/写对象
- 通过文件读/写对象创建缓冲流对象
- 调用缓冲流对象的方法完成读/写操作
- 按照“后使用先关闭”的顺序依次关闭输入输出流
以在文件行数未知的情况下,读取已存在的学生信息文件,输出文件内容并写入新文件的程序为例,介绍文件读写过程。
由于文件的行数未知,因此在读文件前需要计算出文件行数,便于后续循环实现文件的读写~
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文件读写相关推荐
- java大文件读写操作
转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...
- 【Java】文件读写
[Java]文件读写 FileInputStream类和FileOutputStream类 从文件读入全部数据 public static String readData(String filenam ...
- java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...
- 讨论下 Java 流文件读写缓存大小设置的问题
2019独角兽企业重金招聘Python工程师标准>>> 我们在 java 里面进行流文件处理的时候,一般会用到缓存,设置缓存的时候一般设置也是 byte[1024]的大小,考虑到现在 ...
- 【Java】文件读写和输入输出
写在前面的话: 版权声明:本文为博主原创文章,转载请注明出处! 博主是一个小菜鸟,并且非常玻璃心!如果文中有什么问题,请友好地指出来,博主查证后会进行更正,啾咪~~ 每篇文章都是博主现阶段的理解,如果 ...
- java 往文件写值,java文件读写
Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行 一次分析,归类,理清不同方法之间的异同点. 一.在 JDK 1.0 中,通常是用 InputStream &a ...
- java gui 读取文件夹_java Swing GUI 入门-文件读写器
java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...
- java FileReader/FileWriter读写文件
java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...
- Java之文件流操作的文件读写
Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...
- java流与文件——读写二进制数据(DataOutput + DataInput)
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--读写二进制数据(DataOutput + DataInput)的相关知识: 0.2) ...
最新文章
- Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常
- echart 图谱_zrend echart 展示家庭图谱示例代码(类思维导图)
- 51nod1236 序列求和 V3
- 不同matlab版本所支持的gcc g+版本
- vb取消文本框的粘贴功能
- C# 3.0通过Linq、Lambda、匿名函数、代理函数实现数据查询
- java多继承_为什么 Java 不支持类多重继承?
- Maven - 配置setting.xml
- JavaWeb案例(MVC+MySQL+分页功能)+前后端分离
- OPENCV中滑动条的使用
- 迷茫的剑客----网站设计师! -----静水流深
- 家用无线路由器WDS初始化失败解决方法
- 2021开年巨作!JDBC连接数据库工具类!
- C语言编程-随机步法的实现
- 1.Android简介,Android Studio安装,创建运行Android程序
- 光标突然由竖线变成小黑块怎么解决?
- windows查询主机名命令
- 我谈阶梯博弈(Staircase Nim)
- CUDA安装失败-Nsight compute安装失败-如何测试CUDA是否安装成功?Reason: VS** was not found
- Springboot+Vue实现发表文章功能
热门文章
- Shiro面试题(二十道)
- mysql测评作业指导书_测评作业指导书
- java工程师的职业规划_Java工程师如何进行职业规划?
- decodeURI方法,中文乱码转换为汉字, 将url地址中的乱码转换为正常的
- 浅分享一下zzulioj刷题总结
- 一款简单好用的动画/游戏制作软件|源码编辑器|编程猫南宁体验中心
- Tensorflow saved_model.pb 文件转成 saved_model.pbtxt文件
- CLRC663寄存器说明中文版
- 计算机职业规划500字中专,计算机中专生职业规划范文500字中专生职业生涯规划书范文.doc...
- c语言如何命名开根号函数,c++开根号函数?