1

在我的程序中,我使用了该函数FileReader(String fileName)来读取文件。此文件保存在 fileName 中,其中包含一个字符串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";
     }

}
4

3 回答 3

1

编译器不会在任何地方搜索您的文件。该文件是在运行时搜索的,而不是在编译时。如果您提供相对路径,则将在您运行程序的目录中搜索该文件。

于 2013-03-11T08:43:38.270 回答
0

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

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

于 2013-03-11T10:11:36.880 回答
0
    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";
于 2013-03-11T08:40:59.220 回答