程序的作用:用户加载文件,并将文件名,创建日期和文件号保存到文本文件中。我希望程序检查文件以查看文件名是否已存储。如果是这样,则要检查创建日期以查看它是否与用户当前尝试保存的日期匹配。如果不同,则用新日期保存当前保存的创建日期。
Info.txt的示例:
CreationDate: 140319, FileName: example1.txt, FileNumber: 1
CreationDate: 110219, FileName: example2.txt, FileNumber: 6
CreationDate: 100319, FileName: example3.txt, FileNumber: 14
我如何创建和写入文件:
public void fileCreation() throws IOException {
String fileinformation = File.creationdate + ", " + File.name + ", " + "Number: " + File.Number;
FileWriter wr = new FileWriter("Info.txt", true);
PrintWriter output = new PrintWriter(wr);
output.println(fileinformation);
output.close();
}
我当前如何检查文件,目前仅打印文件内容,因此,如果用户使用不同的创建日期保存example2.txt,那么新文件应覆盖当前文件
public void scanFile() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("Info.txt"));
String readfile;
while ((readfile = br.readLine()) != null) {
System.out.println(readfile);
}
System.out.println("file not found");
}
创建日期是一个较长的数字,而File.creationdate是一个字符串,例如“ CreationDate:140319”,最好检查一下FileNumber是否匹配,但这不是必须的。
答案 0 :(得分:0)
您应该在行上使用split,并以','作为分隔符。 然后,您可以遍历每一行,对于每一行,请首先检查名称是否与文件名相同(如果相同),请检查日期,然后最后检查FileNumber。 但是,为什么需要一一检查呢?最好用&&像这样写它
public boolean scanFile() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("Info.txt"));
String readfile;
Boolean isAlreadyIn = false;
while ((readfile = br.readLine()) != null) {
String[] parts = readFile.split(',');
if(parts[1].replace("FileName: ","").equals(File.name) &&parts[0].replace("CreationDate: ","").equals(File.creationdate) &&parts[2].replace("FileNumber: ","").equals(File.number){
isAlreadyIn = true; // you can also write directly in this fonction
}
return isAlreadyIn;
}
}
如果您真的需要一个一个地检查它,只需创建一个if(if(if()),其中包含条件