IO初体验

IO初体验

文件与目录
File类创建文件对象(绝对路径/相对路径)
查看File路径和名称:
File getAbsoluteFile() :获取绝对路径
String getAbsolutePath():获取绝对路径
String getPath() :获取文件路径
String getName() :获取文件名称
File getParentFile():获取上级目录文件(一般用来进行判断是否缺少父级文件夹)
String getParent() :获取上级目录路径
File类中方法-文件操作
boolean isFile() :是否是文件
boolean createNewFile() :创建新的文件
static File createTempFile(String prefix, String suffix) :创建临时文件boolean delete() :删除文件
void deleteOnExit() :在JVM停止时删除文件
boolean exists():判断文件是否存在
boolean renameTo(File dest) :重新修改名
File类中方法-目录操作
boolean isDirectory() :判断是否是目录
boolean mkdir() :创建当前目录
boolean mkdirs() :创建当前目录和上级目录
String[] list() :列出所有的文件名
File[] listFiles() :列出所有文件对象
static File[] listRoots() :列出系统盘
IO
Reader,字符输入流的抽象父类。
Writer,字符输出流的抽象父类。
InputStream,字节输入流的抽象父类。
OutputStream,字节输出流的抽象

FileReader,Reader的子类,从文件中读取字符。
FileWriter,Writer的子类,往文件中写入字符。
FileInputStream,InputStream的子类,从文件中读取字节。FileOutputStream,OutputStream的子类,往文件中写入字节。

BufferedReader,字符缓冲输入流,用于提升字符读取速度。BufferedWriter,字符缓冲输入流,用于提升字符写入速度。BufferedInputStream,字节缓冲输入流,用于提升字节读取速度。BufferedOutputStream,字节缓冲输出流,用于提升字节写入速度。

DataInputStream,数据输入流,用于读取基本数据类型数据DataOutputStream,数据输出流,用于写入基本数据类型。ObjectInputStream,对象输入流,用于读取基本数据类型和对象类型。被读取的对象要实现Serializable接口。
ObjectOutputStream,对象输出流,用于写入基本数据类型和对象类型。被写入的对象要实现Serializable接口。

PrintWriter,字符打印流,用于写入字符数据。
PrintStream,字节打印流,用于写入字节数据。
InputStreamReader,输入转换流,用于把字节输入流流转换为字符输入流,可以指定编码格式。
OutputStreamWriter,输出转换流,用于把字节输出流转换为字符

习题小练(简易考试系统–控制台打印)
需求,读取xx.txt文件的习题,将试题存入集合进行便利,存储用户输入答案,在用户提交后与正确答案进行比对(可翻上下题,可查询历史成绩)
在这里插入图片描述资料如上!
代码实现
//试题属性
public class Item {
private String title;
private String optionA;
private String optionB;
private String optionC;
private String optionD;
private String answer;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getOptionA() {
return optionA;
}
public void setOptionA(String optionA) {
this.optionA = optionA;
}
public String getOptionB() {
return optionB;
}
public void setOptionB(String optionB) {
this.optionB = optionB;
}
public String getOptionC() {
return optionC;
}
public void setOptionC(String optionC) {
this.optionC = optionC;
}
public String getOptionD() {
return optionD;
}
public void setOptionD(String optionD) {
this.optionD = optionD;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public Item(String title, String optionA, String optionB, String optionC, String optionD, String answer) {
super();
this.title = title;
this.optionA = optionA;
this.optionB = optionB;
this.optionC = optionC;
this.optionD = optionD;
this.answer = answer;
}
public Item() {
super();
}
}
//实现功能
public class ExamManager {
//存储所有试题
static List allItem = new ArrayList<>();
//存储自己的答案
static String[] myAnswter = null;

//临时集合
static List<String> tempList = new ArrayList<>();

static {
	try {
		initItem();
		myAnswter = new String[allItem.size()];
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

//初始化所有的试题
public static void initItem() throws IOException {
	readFileToList();
	for(int i = 0;i<tempList.size();i+=7) {
		String title = tempList.get(i);
		String optionA = tempList.get(i+1);
		String optionB = tempList.get(i+2);
		String optionC = tempList.get(i+3);
		String optionD = tempList.get(i+4);
		String answer = tempList.get(i+5);
		Item item = new Item(title, optionA, optionB, optionC, optionD, answer);
		allItem.add(item);
	}
	System.out.println();
}

public static void readFileToList() throws IOException {
	//读取文件内容封装到allItem
	BufferedReader br = new BufferedReader(new FileReader("items.txt"));
	//循环读取文件内容添加到集合
	String str = null;
	while((str=br.readLine()) != null) {
		tempList.add(str);
	}
	br.close();
}
//开始考试
public static void startExam(int index) {
	Item item = allItem.get(index);
	System.out.println(item.getTitle());
	System.out.println(item.getOptionA());
	System.out.println(item.getOptionB());
	System.out.println(item.getOptionC());
	System.out.println(item.getOptionD());
}

public static void main(String[] args) {
	ExamManager manger = new ExamManager();
	boolean flag = true;
	int index = 0;
	Scanner sc = new Scanner(System.in);
	while(flag) {
		startExam(index);	
		System.out.println("请输入你的答案:");
		String answer = sc.next();
		myAnswter[index] = answer;
		System.out.println("P 上一题,N 下一题 ,E 交卷");
		String option = sc.next();
		switch(option) {
			case "P":{
				index = index==0 ? index : --index;
				break;
			}
			case "N":{
				index = index==allItem.size()-1 ? index : ++index;
				break;
			}
			case "E":{
				flag = false;
				break;
			}
			default:{
				System.out.println("录入错误");
			}
		}
	}
	
	System.out.println("比对成绩");
	double score = judge();
	System.out.println("score:"+score);
}

public static double judge( ) {
	double score = 0;
	//比对两个集合  allItem  myAnswer
	for(int i = 0;i<allItem.size();i++) {
		Item  item = allItem.get(i);
		if(item.getAnswer().equalsIgnoreCase(myAnswter[i])) {
			score += 10;
		}
	}
	return score;
}

}
@撒花!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值