我正在测试一个示例代码,该代码显示了异常管理的用法,并使用一个文本文件作为示例。
我的问题是我不知道要创建该存档的默认位置在哪里。
这是代码:
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;
}
}
答案 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())