【问题标题】:How to determine correct path to open a file with PrintWriter?如何确定使用 PrintWriter 打开文件的正确路径?
【发布时间】:2019-03-17 22:12:20
【问题描述】:

创建PrinterWriter对象时:

PrintWriter outputFile = new PrintWriter(*FileName*);

编译器去哪里寻找FileName?例如,在 Eclipse 中,我在 Arrays/src/ArraysAndFiles.java 中工作。在这个例子中,我试图打开 Values.txt。我在 src 目录中创建了这个文件,因为这是存储 ArraysAndFiles.java 的地方。当我尝试在以下代码中打开文件时,我得到一个FileNotFoundException

import java.io.PrintWriter;

public class ArraysAndFiles {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PrintWriter outputFile = new PrintWriter("Values.txt");

    }
}

Values.txt的正确路径是什么?

【问题讨论】:

  • 当您将路径传递给PrintWritier 时,它正在查看操作系统的文件系统,您可以右键单击文件以查看其完整路径并将其传递给PrintWriter但是,当您 JAR 代码时,您将无法完全写入该运行 JAR 中的文件。这是XY problem,您的实际目标是什么,以便有人可以帮助您实现它?
  • 另一种打开文件的方法是使用JFileChooser 并让用户为您挑选文件。 docs.oracle.com/javase/10/docs/api/javax/swing/…
  • 将文件放入项目目录/Arrays.
  • @xtratic 我正在阅读 Starting Out with Java 并且只是试图跟随“使用数组和文件”示例。
  • 我不确定该示例的含义,您的目标是什么? 如果你不关心你的代码在 Jarred 时是否正常工作,而这只是一个实验, 那么只需根据 OS 文件系统将路径更正为完整路径,例如。 C:\...\...\...\Arrays\src\Values.txt.

标签: java file printwriter


【解决方案1】:

解决方案 #1(推荐用于小文件,但您也可以在其他计算机上找到该文件):How do I load a file from resource folder?

解决方案 #2: 使用File(String parent, String child) 构造函数逐步构建路径。示例:

File desktop = new File(System.getProperty("user.home"),"Desktop");
File textsFolder = new File(desktop,"texts");
File testsFolder = new File(textsFolder,"tests");
File peopleTxt = new File(testsFolder,"people,txt");

等于:C://Users//George//Desktop//texts//tests//people.txt(Windows 操作系统)。

【讨论】:

    【解决方案2】:

    根据代码,

    PrintWriter outputFile = new PrintWriter("Values.txt");

    如果您将 Values.txt 放在当前/项目目录中,即在 Arrays 文件夹中,它应该可以工作,但是上面提到的 cmets 有一些限制,例如写入作为 JarFile 一部分的文件。

    根据你的目的,你应该采取行动。

    【讨论】:

      【解决方案3】:

      在您的示例中,“Values.txt”是相对路径。它与您的工作目录相关。
      通常它与您的 JAR 文件所在的目录相同。

      在 Eclipse 中,应用程序构建在“bin”文件夹中。在您的情况下,它是Arrays\bin\。所以这是应用程序的工作目录,您的文件必须在那里。

      如果您希望 Eclipse 在构建过程中导出此文件,请执行以下操作:

      右键文件->构建路径->添加到构建路径

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 2012-12-17
        • 2019-10-06
        相关资源
        最近更新 更多