在java中,当我们使用函数';文件读取器(字符串文件名)';,我们应该把文件名放在哪里?
在我的程序中,我使用函数在java中,当我们使用函数';文件读取器(字符串文件名)';,我们应该把文件名放在哪里?,java,Java,在我的程序中,我使用函数FileReader(stringfilename)读取文件。此文件保存在文件名处,文件名中包含一个字符串setup.ini。我将这个文件保存在编译java程序的同一个文件夹中,但即使从这个文件夹中删除了这个文件,我也没有发现任何文件未找到的异常。所以我想知道编译器是否从其他位置获取文件 请参阅下面的代码: public class ReadINI { public static void main(String args[]) throws IOExceptio
FileReader(stringfilename)
读取文件。此文件保存在文件名处,文件名中包含一个字符串setup.ini
。我将这个文件保存在编译java程序的同一个文件夹中,但即使从这个文件夹中删除了这个文件,我也没有发现任何文件未找到的异常。所以我想知道编译器是否从其他位置获取文件
请参阅下面的代码:
public class ReadINI
{
public static void main(String args[]) throws IOException
{
String s = getParameter("bin","setup.ini");
System.out.println("Result " + s);
}
public static String getParameter(String inputValue, String fileName)
{
try
{
BufferedReader myInput = new BufferedReader(new FileReader(fileName));
try
{
try {
String fileLine;
fileLine = myInput.readLine();
do
{
String stringArray[] = fileLine.split("=");
if (inputValue.equals(stringArray[0]))
return stringArray[1];
}while ((fileLine = myInput.readLine()) != null);
}
catch (Exception e)
{
System.err.println("Error1: " + e);
}
} // end try
catch (Exception e)
{
System.err.println("Error2: " + e);
}
} // end try
catch (Exception e)
{
System.err.println("failed to open file setup.ini");
System.err.println("Error3: " + e);
}
return "Not Found";
}
}
编译器不会在任何地方搜索您的文件。在运行时搜索文件,而不是在编译时。如果给出相对路径,将在运行程序的目录中搜索文件。编译器不会在任何地方搜索文件。在运行时搜索文件,而不是在编译时。如果您给出相对路径,将在运行程序的目录中搜索该文件。任何在java应用程序中打开文件的请求都会使JVM从该特定java类的
类路径开始搜索。因此,当您将要在代码中打开的文件放入类路径
——基本上就是.java文件(以及编译后的.class文件)所在的文件夹。详细说明,如果您的文件someFile.txt
将由位于packageorg.pack1.pack2
中的SomeClass
访问,则someFile.txt
应存在于文件夹\org\pack1\pack2\
不鼓励使用绝对路径访问应用程序内的文件,因为这会降低该应用程序的可移植性。任何在java应用程序内打开文件的请求都会使JVM从该特定java类的类路径开始搜索。因此,当您将要在代码中打开的文件放入类路径
——基本上就是.java文件(以及编译后的.class文件)所在的文件夹。详细说明,如果您的文件someFile.txt
将由位于packageorg.pack1.pack2
中的SomeClass
访问,则someFile.txt
应存在于文件夹\org\pack1\pack2\
不鼓励使用绝对路径访问应用程序中的文件,因为这会降低该应用程序的可移植性。无论将文件放在项目中的何处,它的相对路径必须在那里给出。如果我只提到文件名,它不应该在编译程序的同一目录中搜索文件吗?你在哪里运行你的程序?那里应该有一个setup.ini文件。addSystem.out.println((新文件(文件名)).getAbsolutePath()代码>到方法体并检查实际文件的路径。您不需要那么多try-catch子句。您可以只使用一个try-catch。无论您将文件放在项目中的何处,都必须在那里指定其相对路径。如果我没有提到文件名以外的任何内容,它不应该在编译程序的同一目录中搜索该文件吗?您在哪里运行程序?那里应该有一个setup.ini文件。addSystem.out.println((新文件(文件名)).getAbsolutePath()代码>到方法体并检查实际文件的路径。您不需要那么多try-catch子句。您只需执行一次try catch即可。我已通过从保存程序的目录中删除setup.ini文件来运行该程序,我希望我的程序会出现“未找到文件”的异常。但是程序没有给出任何例外。您能提出一些解决方案吗?我已经运行了这个程序,从我保存程序的目录中删除了setup.ini文件,我希望我的程序会出现“找不到文件”的异常。但是程序没有给出任何例外。你能提出一些解决方案吗?正如你在上面的代码中看到的,我没有使用任何绝对路径。我刚才在字符串中直接提到了文件名,它是FileReader()
函数的一个参数。正如您在上面的代码中看到的,我没有使用任何绝对路径。我刚才在字符串中直接提到了文件名,它是FileReader()
函数的一个参数。
the file should be right inside your project outside src directory ,
the file should be in the same folder where src folder is present
|--MyProject
|--src
|--youFile.txt
or you can give full path to the file which is located anywhere on the disk
String fileName = "c:/folder1/folder2/yourFile.txt";