目录
一、知识点
1、文件读取
(1)利用file读取电脑中的文件,此为基础,既可作为输入流的底层,也可作为输出流的底层,例如(在此例中,第一个参数为文件位置,第二个参数为文件名称,如想在自己的编译器中运行,请新建txt文件,并修改文件路径)
File f1 = new File("D:\\Users\\ASUS\\Desktop", "score.txt");
File f2 = new File("D:\\Users\\ASUS\\Desktop", "scoreAnalysis.txt");
(2)字符流,filewriter和filereader,基于file的流,该流可作为缓冲流的底层,可以读取和写入,但没有按行读取和写入
(3)bufferedwriter和bufferedreader,可以按行读取写入,结合scanner的字符串解析,非常方便
例如(此例基于上面的例子)
BufferedWriter w = new BufferedWriter(new FileWriter(f2));
BufferedReader r = new BufferedReader(new FileReader(f1));
(4)按行读取写入,在缓冲流中,可以用readline进行按行读取,write之后加一个newline可以达到换行的结果,而想要一行一行读取文件所有内容,例如(此例无法运行,仅作为参考)
String listener;
while((listener=r.readLine())!=null)
2、字符串解析
(1)我们有时候只需要从字符串中提取我们需要的内容,此时scanner传入的参数为string类型
(2)如果需要int类型,则用hasnextInt,以此类推,但仅仅用此两类会发生错误,因为无法读取的时候会抛出异常,需要加上try-catch语句,举例
Scanner input = new Scanner(listener_new);
while(input.hasNext()){
try{
sum = sum + input.nextInt();
}
catch(InputMismatchException e){
input.next();
}
3、注意事项
(1)文件读取一定要使用try-catch语句
(2)流使用后要及时关闭
(3)流的使用也要try-catch语句
4、java各类输入输出流一览
https://blog.csdn.net/qq_35760825/article/details/124577378
三、代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;
class Fenxi{
private int sum = 0;
private File f1;
private File f2;
public Fenxi(File f1,File f2){
this.f1 = f1;
this.f2 = f2;
}
public void tongji(){
try{
BufferedWriter w = new BufferedWriter(new FileWriter(f2));
BufferedReader r = new BufferedReader(new FileReader(f1));
String listener;
while((listener=r.readLine())!=null){
String listener_new = listener.replaceAll(",", " ");
Scanner input = new Scanner(listener_new);
while(input.hasNext()){
try{
sum = sum + input.nextInt();
}
catch(InputMismatchException e){
input.next();
}
}
input.close();
w.write(listener+" zongFen:"+(float)sum);
w.newLine();
sum = 0;
}
w.close();
r.close();
}
catch(IOException e){
}
}
}
public class AnalysisResult {
public static void main(String[] args) {
try{
File f1 = new File("D:\\Users\\ASUS\\Desktop", "score.txt");
File f2 = new File("D:\\Users\\ASUS\\Desktop", "scoreAnalysis.txt");
Fenxi x = new Fenxi(f1, f2);
x.tongji();
}
catch(Exception e){
}
}
}