当前位置: 首页 > 面试题库 >

Java FileReader找不到文件

庄经国
2023-03-14
问题内容

我决定开始一个新问题,以便可以严格关注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()); }
}

这是请求的堆栈跟踪:

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)

问题答案:

打印出是什么current_directory,并确认它符合您的期望。

我还将打印出您传递给的完整文件路径FileReader

大多数情况下,这种行为与我的期望不符,我发现我的假设是错误的。



 类似资料:
  • 问题内容: 我最近一直在开发一个程序,该程序可以从Java程序编译并运行C ++程序,我已经使一切基本正常(或至少据我所知),但是后来我注意到有些东西被打印到错误流中: 如您所见,如果我通过SSH而不是Java代码进行操作,它会起作用吗? Java代码: 感谢您的任何帮助,它已得到批准! 问题答案: 告诉你问题所在。 您的一级引号过多,因此您正在寻找而不是。 该的Runtime.exec文档说:

  • 在spring Java框架中,我使用context.xml文件创建bean,然后用加载它。 我的程序抛出异常。 文件存在。我使用Gradle进行依赖关系管理,并且我的src文件夹(文件所在的位置)在intellij中标记为resource。我知道由于某种原因,即使我的src文件夹应该包含在classpath变量中,但gradle run任务只是不能从这里抓取它。 当我使用时,所有的工作都很好,但

  • PhpStorm 2021.1.1 Mac M1 11.3 当我尝试使用或查找文件时,PhpStorm未能找到该文件。似乎正在尝试从目录,而不是在项目目录中搜索。 我试图< code >文件|无效缓存,运气不好。有人能帮忙吗?

  • 问题内容: 我在当前工作目录上有文件,但是javac报告: 我正在研究ubuntu。 问题答案: 从上面的评论看来,您尝试过: 在您的Ubuntu系统上。该分离器是在UNIX系统上的Windows。 Ubuntu考虑了直到的命令,因此给出了消息。 应该编译好。

  • 问题内容: 我正在运行一个简单的服务器 当我向主页发出GET请求时,运行时将引发以下错误 我不明白这个错误。有任何想法吗?我正在Cloud9中工作。 我的目录结构是 问题答案: 包含路径是相对的,您需要更新路径以包含“ partials”子文件夹,例如 查看文档