读取文件的位置在哪里?

时间:2019-05-13 11:41:06

标签: java

我正在测试一个示例代码,该代码显示了异常管理的用法,并使用一个文本文件作为示例。

我的问题是我不知道要创建该存档的默认位置在哪里。

这是代码:

package exceptionManager;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class CheckedExceptionDemo {
    public static void main(String[] args) {
        //Below line calls readFile method and prints content of it
        String filename="test.txt";
        try {
            String fileContent = new CheckedExceptionDemo().readFile(filename);
            System.out.println(fileContent);
        } catch (FileNotFoundException e) {
            System.out.println("File:"+ filename+" is missing, Please check file name");
        } catch (IOException e) {
            System.out.println("File is not having permission to read, please check the permission");
        }
    }
    public String readFile(String filename)throws FileNotFoundException, IOException{
        FileInputStream fin;
        int i;
        String s="";
        fin = new FileInputStream(filename);
        // read characters until EOF is encountered
        do {
        i = fin.read();
        if(i != -1)  s =s+(char) i+"";
        } while(i != -1);
        fin.close();
        return s;
    }
}

3 个答案:

答案 0 :(得分:2)

如果未定义绝对路径,则这些路径通常是相对于工作目录的-这意味着,如果您从/myfolder运行该应用程序,则会从/myfolder/test.txt中读取该应用程序。

因此,使用标准(例如System.getProperty("user.home"))作为前缀很有帮助。

请注意,定义绝对路径很可能会阻止应用程序独立于系统运行。使用/\作为路径段分隔符也是如此。

答案 1 :(得分:1)

您可以使用以下方法检查您当前的用户目录:

    System.out.println(System.getProperty("user.dir"));

答案 2 :(得分:1)

文件名实际上是一个相对路径-它不包含任何驱动器号,也不以/\开头。 从您当前的工作目录开始解析。此目录取决于您实际启动程序的方式。

例如如果从命令行提示符运行Java,则当前所在的目录是基本目录。如果您cd到另一个目录,程序将在该目录中搜索文件。

如果从IDE启动程序,则工作目录的默认文件夹是项目的基本目录。不过,您可以在运行配置中更改它。

如果没有帮助,请尝试从程序中打印目录,例如:

System.out.println("Current dir: " + new java.io.File( "." ).getCanonicalPath())