Как записать путь к файлу в txt.file? - PullRequest
0 голосов
/ 07 апреля 2020

Я пишу простую программу, которая ищет файл и, если он существует, записывает свой путь в текстовый файл. Если нет, программа останавливается на 1 минуту. Моя проблема заключается в том, что путь к файлу не печатается в текстовый файл, когда искомый файл существует. Я думаю, что-то не так с блоком try. Я не знаю, где проблема. Как я могу решить это?

public class FileScanner {
public void scanFolder() throws IOException, InterruptedException {
    Scanner input = new Scanner(System.in);

    //tworzenie pliku logu
    File log = new File("C:/Users/mateu/OneDrive/Pulpit/log.txt");
    if (!log.exists()) {
        log.createNewFile();
    }

    //obiekt zapisujacy nazwy i sciezki plikow do logu
    PrintWriter printIntoLog = new PrintWriter(log);


    while (true) {
        //podanie sciezki szukanego pliku
        System.out.println("Input file's directory you are looking for: ");
        String path = input.nextLine();
        //utworzenie obiektu do danego pliku
        File searchedFile = new File(path);

        //sprawdzenie czy plik istnieje- jesli tak to zapisuje do logu jego sciezke i usuwa go
        try{
            if (searchedFile.exists()) {
                printIntoLog.println(searchedFile.getPath());
                //searchedFile.delete();
            }else{
                throw new MyFileNotFoundException("Searching stopped for 1 minute.");
            }
        }catch(MyFileNotFoundException ex){
            System.out.println(ex);
            TimeUnit.MINUTES.sleep(1);
        }
    }
}

}

1 Ответ

0 голосов
/ 07 апреля 2020

Вы должны закрыть ссылку PrintWriter до завершения выполнения. Это принудительная практика - закрывать файл после чтения / записи.

Если вы используете Java +7, вы можете использовать причудливый способ с синтаксисом try-with-resources

```java
try (PrintWriter printIntoLog = new PrintWriter(log)) {
   while (true) { 
      ....
   }
}
```

В более старых версиях вы можете использовать try-finally синтаксис

try {
  while(true) {
     ...
  }
} finally {
   printIntoLog.close();
}

См.

Java - Попробуйте с ресурсами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...