Поймать исключение FileNotFoundException, хотя я пытаюсь поместить input.txt в ЛЮБОЙ каталог? - PullRequest
0 голосов
/ 17 мая 2019

Когда я просто копирую код из https://www.tutorialspoint.com/java/java_files_io.htm затем я создаю «input.txt» и сохраняю его в том же каталоге, что и файлы java. Расположение, как показано ниже:

Java-файл: D: \ workspace \ Hello \ src \ io \ Letter.java

Текстовый файл: D: \ workspace \ Hello \ src \ io

Я получаю сообщение об ошибке FileNotFoundException. Затем я все равно попытался поместить текстовый файл, затем попытаться запустить код, но он не работает.

Я пытаюсь искать раньше. Это тот же случай, что и в моем случае, но путь решения другой. https://www.eclipse.org/forums/index.php/t/55306/

Тогда вопрос решается, когда используется весь каталог.

//Before
package io;
import java.io.*;
public class Letter {

   public static void main(String args[]) throws Exception {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }

   }

}


//After
package io;
import java.io.*;
public class Letter {

   public static void main(String args[]) throws Exception {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("D:\\workspace\\Hello\\src\\io\\input.txt");
         out = new FileOutputStream("D:\\workspace\\Hello\\src\\io\\output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }}}

Наконец, ответ - поставить весь каталог. Почему это работает?

1 Ответ

0 голосов
/ 17 мая 2019

Когда вы указываете

in = new FileInputStream("input.txt");
out = new FileOutputStream("output.txt");

, вы ссылаетесь на каталог, в котором работает ваш пользователь (в вашем случае ваша IDE), поэтому файл, который вы пытаетесь открыть, находится по адресу workingDirectory / input.txt

Это общее поведение при работе с относительными путями к файлам.

Здесь вы можете получить дополнительную информацию по этой теме: https://docs.oracle.com/javase/tutorial/essential/io/path.html

Редактировать: Если вы используете IDE со встроенной JRE, путь, относительно которогопути указывают на каталог ваших проектов.

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