本程序实现java按行读取文件内容到另一文件并记录数据行数
用到的方法
- BufferedReader BufferedWriter
- FileReader FileWriter
- split
student.txt文件格式
代码
package day1025;
import java.io.*;
public class CompareC {
//定义total静态变量记录文件行数
static int total=0;
public static void main(String[] args) throws IOException {
try{
//文件路径写为相对路径也可以,如:src/day1025/student.txt
//student_ww.txt文件路径若没有,则程序会创建该文件
read("G:\JavaProject01\src\day1025\student.txt","G:\JavaProject01\src\day1025\student_ww.txt");
}catch (IOException e){
e.printStackTrace();
}
System.out.println(total);
}
public static void read(String rstr,String wstr) throws IOException{
BufferedReader bufferedReader=new BufferedReader(new FileReader(rstr));
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(wstr));
//String类型初始化,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址。
String inline="",outline="";
//定义data数组
String[] data;
String name; //姓名
String no; //学号
//int no;
double score; //分数
//readline,读取一个文本行
while ((inline=bufferedReader.readLine())!=null){
//以一个空格为界分割字符串,存到data数组中
data=inline.split(" ");
name=data[0];
//强制转化,将字符串类型转化为 int 和 double
no=data[1];
//no=Integer.parseInt(data[1]);
//注意:若data[1]首个数字为0.那么转化后的no会失去0
score=Double.parseDouble(data[2]);
//将该行文本赋值给outline
outline=name+"t"+no+"t"+score;
//验证outline
//System.out.println("t"+name+"t"+no+"t"+score);
//把 outline 的内容写入缓冲区
bufferedWriter.write(outline);
//刷新缓冲流,把数据存进文件student_ww.txt中
bufferedWriter.flush();
bufferedWriter.newline();
total++;
}
}
}
结果