在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
将由位于package
org.pack1.pack2
中的
SomeClass
访问,则
someFile.txt
应存在于文件夹
\org\pack1\pack2\


不鼓励使用绝对路径访问应用程序内的文件,因为这会降低该应用程序的可移植性。

任何在java应用程序内打开文件的请求都会使JVM从该特定java类的
类路径开始搜索。因此,当您将要在代码中打开的文件放入
类路径
——基本上就是.java文件(以及编译后的.class文件)所在的文件夹。详细说明,如果您的文件
someFile.txt
将由位于package
org.pack1.pack2
中的
SomeClass
访问,则
someFile.txt
应存在于文件夹
\org\pack1\pack2\


不鼓励使用绝对路径访问应用程序中的文件,因为这会降低该应用程序的可移植性。

无论将文件放在项目中的何处,它的相对路径必须在那里给出。如果我只提到文件名,它不应该在编译程序的同一目录中搜索文件吗?你在哪里运行你的程序?那里应该有一个setup.ini文件。add
System.out.println((新文件(文件名)).getAbsolutePath()到方法体并检查实际文件的路径。您不需要那么多try-catch子句。您可以只使用一个try-catch。无论您将文件放在项目中的何处,都必须在那里指定其相对路径。如果我没有提到文件名以外的任何内容,它不应该在编译程序的同一目录中搜索该文件吗?您在哪里运行程序?那里应该有一个setup.ini文件。add
System.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";