2012-05-01 3 views
-1

Я решил начать новый вопрос, чтобы он мог сосредоточиться на ошибках FileReader.Java FileReader не находит файлы

Это метод, который принимает имя файла и желаемое имя вывода для нового файла. Предположим, что введенное имя файла - «hello.txt» ... метод делает это что-то вроде «/home/User/hello.txt», который входит в FileReader в качестве параметра. Проблема в том, что я получаю это как вывод «/home/User/hello.txt (нет такого файла или каталога)», даже если файл существует, а структура каталогов и разрешения правильны.

Я не мог заставить этот метод работать с просто ссылкой на файл в локальном каталоге .class и .java-файла, поэтому я искал свой путь, чтобы найти, что абсолютное указание не является плохим вариантом.

Любой вход полезный!

public void fileGenerator(String in, String out) {  
try { 
    String current_directory = System.getProperty("user.dir"); 
    Scanner input = new Scanner(new FileReader(current_directory+"/"+in)); 
    PrintWriter output = new PrintWriter(current_directory+"/"+out); 
     while(input.hasNext()) { 
     String line = input.nextLine(); 
    output.println(line); 
    output.close(); 
    } 
    } catch (Exception e) { System.out.println(e.getMessage()); } 
} 

Вот запрашиваемая StackTrace:

java.io.FileNotFoundException: /home/User/hello.txt 

(No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:137) 
    at java.io.FileInputStream.<init>(FileInputStream.java:96) 
    at java.io.FileReader.<init>(FileReader.java:58) 
    at TEST.fileGenerator(TEST.java:131) 
    at TEST.generateCSV_TWO(TEST.java:122) 
    at TEST$4.actionPerformed(TEST.java:102) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253) 
    at java.awt.Component.processMouseEvent(Component.java:6203) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:5968) 
    at java.awt.Container.processEvent(Container.java:2105) 
    at java.awt.Component.dispatchEventImpl(Component.java:4564) 
    at java.awt.Container.dispatchEventImpl(Container.java:2163) 
    at java.awt.Component.dispatchEvent(Component.java:4390) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) 
    at java.awt.Container.dispatchEventImpl(Container.java:2149) 
    at java.awt.Window.dispatchEventImpl(Window.java:2478) 
    at java.awt.Component.dispatchEvent(Component.java:4390) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649) 
    at java.awt.EventQueue.access$000(EventQueue.java:96) 
    at java.awt.EventQueue$1.run(EventQueue.java:608) 
    at java.awt.EventQueue$1.run(EventQueue.java:606) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116) 
    at java.awt.EventQueue$2.run(EventQueue.java:622) 
    at java.awt.EventQueue$2.run(EventQueue.java:620) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:619) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) 

ответ

-1

печати, что current_directory это и убедитесь, что он соответствует вашим ожиданиям.

Я также распечатал полный путь к файлу, который вы передаете в FileReader.

В большинстве случаев это поведение не соответствует моим ожиданиям, я считаю, что мои предположения были неправильными.

+0

Он идеально подходит. – user1062058

+0

Верьте JVM. Если он говорит, что этого не существует, то происходит что-то еще. – duffymo

+0

Я только что проверил код в упрощенном java-файле, и он работал так, чтобы вы были правы. – user1062058

0

Нет такого файла или каталога, что обычно означает, что файл не существует. Измените код и отлаживайте его либо с помощью IDE, либо путем добавления операторов печати. Кроме того, current_directory можно переименовать currentDirectory в соответствие с Java naming conventions. Попробуйте запустить код ниже.

public static void fileGenerator(String in, String out) {  
try { 
    String currentDirectory = System.getProperty("user.dir"); 
    System.out.println(currentDirectory); 
    String inputFileName = currentDirectory+"/"+in; 
    File inputFile = new File(inputFileName); 
    System.out.println(inputFile.getAbsolutePath()); 
    FileReader inputFileReader = new FileReader(inputFile); 
    Scanner input = new Scanner(inputFileReader); 
    PrintWriter output = new PrintWriter(currentDirectory+"/"+out); 
    while(input.hasNext()) { 
     String line = input.nextLine(); 
    output.println(line); 
    output.close(); 
    } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Он идеально подходит к распечатанному каталогу. Извините за соглашения об именах, я PHP-разработчик, просто занимающийся Java – user1062058

+0

Просьба отправить stacktrace. Распечатал ли он абсолютный путь файла? – krishnakumarp

 Смежные вопросы

  • Нет связанных вопросов^_^