文件默认位置

File default location

为什么程序搜索文件:

    File FILE_PATH = new File("‪‪C:\Users\home\Desktop\DbWord.txt");
    System.out.println(FILE_PATH.exists());
    System.out.println(FILE_PATH.getAbsoluteFile());
    FileInputStream fIn = new FileInputStream(FILE_PATH);
    Scanner reader = new Scanner(fIn);

位于:C:\Users\home\Documents\NetBeansProjects\MyDatabase\C:\Users\home\Desktop\DbWord.txt

如何抵消默认位置?

如果这里post有什么不好的,请告诉我,不要投反对票。

谢谢!

为什么投反对票???????????你的问题是什么????????

请仔细检查您的错误详细信息。您可能已经看到类似下面的错误。实际上该程序并不是在搜索文件 "C:\Users\home\Documents\NetBeansProjects\MyDatabase\‪‪C:\Users\home\Desktop\DbWord.txt",而是试图找到您的机器中不存在的文件 "C:\Users\home\Desktop\DbWord.txt"。您看到 "C:\Users\home\Documents\NetBeansProjects\MyDatabase\‪‪C:\Users\home\Desktop\DbWord.txt" 以及错误,因为您已经在代码中使用了 System.out.println(FILE_PATH.getAbsoluteFile()); 语句。

false
Exception in thread "main" java.io.FileNotFoundException: ‪‪C:\Users\home\Desktop\DbWord.txt (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
C:\Users\home\Documents\NetBeansProjects\MyDatabase\‪‪C:\Users\home\Desktop\DbWord.txt
    at com.Whosebug.answer.SimpleFileHelper.main(SimpleFileHelper.java:17)

希望你现在清楚了。

抛出 FileNotFoundException 的主要机会有 3 种。

  1. 指定的文件不存在。
  2. 命名的文件实际上是一个目录而不是文件。
  3. 由于某种原因无法打开指定文件进行读取。

根据您的描述,前两个原因不太可能,请使用file.canRead()方法检查第三点。

如果上面的测试 returns 为真,我会怀疑以下内容:

您可能忘记了显式抛出或捕获潜在的异常(即 FileNotFoundExcetion)。如果你在 IDE 中工作,你应该从编译器那里得到一些抱怨。但我怀疑你没有 运行 你的代码 IDE.

尝试以下代码,看看异常是否会消失:

package com.Whosebug.answer;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class SimpleFileHelper {

    public static void main(String[] args) throws FileNotFoundException {
        File FILE_PATH = new File("C:/Users/home/Desktop/DbWord.txt");
        System.out.println(FILE_PATH.exists());
        System.out.println(FILE_PATH.getAbsoluteFile());
        FileInputStream fIn = new FileInputStream(FILE_PATH);
        Scanner reader = new Scanner(fIn);
    }
}