如何在不使用绝对路径名的情况下在Java中创建File对象?

时间:2015-02-22 02:54:25

标签: java file-io path

这是我现在使用的路径:

C:\Users\Sabrina\Documents\NetBeansProjects\TriangleSumRecursion\lab4Data.txt

我尝试使用以下内容:

C:\TriangleSumRecursion\lab4Data.txt

TriangleSumRecursion\lab4Data.txt

如果我使用这两个中的任何一个,Java会说"(系统找不到指定的文件)" ...

TriangleSumRecursion是我转发的java包。

4 个答案:

答案 0 :(得分:0)

您可以将特定文件导入项目,然后尝试使用TriangleSumRecursion\lab4Data.txt

您可以通过右键单击IDE中的项目文件夹来导入文件,然后单击导入。按照说明操作,并在其中提供文件的路径。

我希望它适合你。

答案 1 :(得分:0)

首先,在Javacode中使用斜杠(' /')而不是反斜杠(' \')。 但除此之外,Java可以处理绝对路径和相对路径。

  

我尝试使用以下内容:C:\ TriangleSumRecursion \ lab4Data.txt

这不是正确的绝对路径,如果没有文件夹' TriangleSumRecursion'在C:\。您的工作路径示例是唯一正确的。

  

和TriangleSumRecursion \ lab4Data.txt

在这里,您可以尝试将其作为相对路径。 Java在您运行代码的文件夹中开始搜索。如果您的java文件位于C:\ Users \ Sabrina \ Documents \ NetBeansProjects'中,那么这将起作用。 但是,由于我认为您的文件位于TriangleSumRecursion'中,因此您要查找的路径只是' lab4Data.txt'。

答案 2 :(得分:0)

您可以尝试以下方式逐行读取文件,首先通过文件阅读器读取文件,然后将其提供给缓冲的阅读器。然后你可以创建一个字符串缓冲区,当程序读取文件的每一行时,它会将它附加到字符串缓冲区。要检查它是否成功,只需关闭文件阅读器并使用toString()方法显示文件的内容。

  `public static void main(String[] args) {
    try {
        File file = new File("lab4Data.txt");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        StringBuffer stringBuffer = new StringBuffer();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line);
            stringBuffer.append("\n");
        }
        fileReader.close();
        System.out.println("File is:");
        System.out.println(stringBuffer.toString());
    } catch (IOException e) {
        e.printStackTrace();
      }
   }
}`

答案 3 :(得分:0)

C:\TriangleSumRecursion\lab4Data.txt是绝对路径,因此无法识别不在此位置的文件。

您可能只是在目录C:\Users\Sabrina\Documents\NetBeansProjects\TriangleSumRecursion中,因此很简单:

Paths.get("lab4Data.txt")

将为您的文件提供Path(这是2015;使用java.nio.file并删除File)。

但这是Windows,Windows有一些奇怪的东西......另一种访问文件的方法是:

Paths.get("c:lab4data.txt")

哪条路径有根(c:)但不是绝对路径(因为这样的路径不能用于唯一标识FileSystem上的资源

请参阅Files课程,了解如何从此文件中打开InputStreamBufferedReader。请注意,如果文件不存在,匹配方法将抛出NoSuchFileException

最后但并非最不重要的是,使用try-with-resources语句:

try (
    final BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);
) {
    // use the reader here
}