0

プロパティから読み取ったファイルパスからファイルを読み取ろうとしていますが、FileNotFoundException が引き続き発生します (ファイルが存在します)。

test.properties:

test.value = "src/main/resources/File.csv"

LoadProperties.java:

public class LoadProperties {

   public static void main(String[] args) throws FileNotFoundException, IOException {

      Properties aProp = new Properties();
      aProp.load(new FileInputStream("src/main/resources/test.properties")); // works

      String filepath = aProp.getProperty("test.value");
      System.out.println(filepath); // outputs: "src/main/resources/File.csv"

      FileReader aReader = new FileReader("src/main/resources/File.csv"); // works
      FileReader aReader2 = new FileReader(filepath); // java.io.FileNotFoundException
   }
}

上記の行が正常に機能しているのに、なぜこの例外がスローされるのですか? プロパティで指定されたパスからファイルを読み取るにはどうすればよいですか?

4

3 に答える 3

3

プロパティファイルに " を入れることは想定されていません。ここでは、Java は次のように認識します。

String file = "\"src/main/resources/File.csv\"";
于 2013-08-28T13:13:22.870 に答える
1
test.value =src/main/resources/File.csv

連続した文字列を表すために、プロパティ ファイルに二重引用符は必要ありません。

于 2013-08-28T13:13:41.610 に答える
0

プロパティ ファイルを読み取る独自のロジックを記述できます。ファイル パスに単一引用符または二重引用符が含まれているかどうかは関係ありません。

String propertyFileLocation = "C:\a\b\c\abc.properties";
try
    {
        fileInputStream = new FileInputStream(propertyFileLocation);
        bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
        properties = new Properties();
        String currentLine = null;
        String[] keyValueArray = null;
        while ((currentLine = bufferedReader.readLine()) != null) {
            if (!currentLine.trim().startsWith("#")) {
                keyValueArray = currentLine.split("=");
                if (keyValueArray.length > 1) {
                    properties.put(keyValueArray[0].trim(), keyValueArray[1].trim().replace("\\\\","\\"));
                }
            }
        }
    } 
    catch (Exception e)
    {
        return null;
    }
于 2016-01-25T08:46:15.943 に答える