1

私のプログラムでは、関数を使用しFileReader(String fileName)てファイルを読み取りました。このファイルは fileName に保持され、文字列を保持していますsetup.ini。このファイルを Java プログラムをコンパイルしているのと同じフォルダーに保存しましたが、このフォルダーからファイルを削除した後でも、File not found の例外は発生しません。それで、コンパイラは他の場所からファイルを取得するのだろうか?

以下のコードを参照してください。

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 アプリケーション内でファイルを開く要求があると、JVMCLASSPATHはその特定の Java クラスから検索を開始します。そのため、コードで開きたいファイルをCLASSPATH- 基本的には .java ファイル (したがってコンパイル済みの .class ファイル) が存在するフォルダーに配置します。パッケージに存在するファイルsomeFile.txtにアクセスする場合は、フォルダーに存在する必要があります。SomeClassorg.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 に答える