Как читать и добавлять текстовые файлы на основе определенных условий - PullRequest
0 голосов
/ 14 марта 2019

Что делает программа: пользователь загружает файл и сохраняет имя файла, дату создания и номер файла в текстовый файл.Я хочу, чтобы программа проверила файл, чтобы увидеть, сохранено ли имя файла.Если это так, чтобы затем проверить дату создания, чтобы увидеть, совпадает ли она с той, которую пользователь пытается сохранить в данный момент.Если он отличается, чтобы сохранить текущую дату создания с новой.

Пример файла 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 с другой датой создания, то новый должен перезаписать текущийone

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, но этоне обязательно.

1 Ответ

0 голосов
/ 14 марта 2019

Вы должны использовать 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 ()) с помощьюсостояние в нем

...