前言
这篇文章主要以学生成绩管理系统中的增加学生成绩信息和查看学生成绩信息作为例子,来向大家展示如何使用缓冲流进行读取文件和写入文件,以及数据追加。
一、缓冲流
缓冲流中读取文件为BufferedRead,写入文件为BufferedRead,其可以对文件进行整行读取。
二、使用步骤
1.代码如下
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.Scanner;
public class Stu {
public static void main(String[] args) throws IOException {
@SuppressWarnings("resource")
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("1.增加学生信息");
System.out.println("2.查看学生信息");
System.out.println("3.退出");
System.out.print("请输入您的操作:");
int command=sc.nextInt();
switch(command) {
case 1:
add();
break;
case 2:
view();
break;
case 3:
return;
default:
System.out.println("您输入的选项不在设置范围内,请重新输入!");
}
}
}
public static void add() throws IOException {
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
String dir="D:/programming/MyJava/Stu.txt";
File file=new File(dir);
if(!file.exists()) {//如果文件不存在,则创建文件
file.createNewFile();
}
//创建bufferedWriter对象并向文件写入内容
BufferedWriter bu=new BufferedWriter(new FileWriter(file,true));
System.out.print("请输入学生的姓名:");
String name=s.nextLine();
System.out.print("请输入学生的学号:");
String Id=s.nextLine();
System.out.print("请输入学生的年龄:");
int age=s.nextInt();
System.out.print("请输入学生的成绩:");
int score=s.nextInt();
//将学生信息存入文件中
//bu.newLine();
bu.append(name+"\t");
bu.append(Id+"\t");
bu.append(age+"\t");
bu.append(score+"\t");
bu.append("\n");
bu.close();
System.out.println("信息已存入文件!");
}
public static void view() throws IOException {
System.out.println("文件中所有学生的信息如下所示:");
String dir="D:/programming/MyJava/Stu.txt";
File file=new File(dir);
if(!file.exists()) {//如果文件不存在,则创建文件
file.createNewFile();
}
//创建BufferedReader读取文件内容
System.out.println("姓名\t学号\t\t年龄\tjava成绩");
BufferedReader b=new BufferedReader(new FileReader(file));
String line;
while((line=b.readLine())!=null) {
System.out.println(line);
}
b.close();
}
}
注意点
通常记事本默认使用的是UTF_8,但是这将可能导致整型数据写入文件当中时变成乱码,所以需要将记事本从UTF_8改为ANSI。