代码之家  ›  专栏  ›  技术社区  ›  Bartek Maraszek

从财产文件读取文件路径

  •  0
  • Bartek Maraszek  · 技术社区  · 12 年前

    我正试图从从财产读取的文件路径中读取文件,但我一直得到FileNotFoundException(文件存在)。

    测试属性:

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

    加载属性.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
       }
    }
    

    为什么在它上面的行正常工作的情况下抛出这个异常? 我应该如何从财产提供的路径中读取文件?

    3 回复  |  直到 12 年前
        1
  •  3
  •   Julien    12 年前

    您不应该将“”放在属性文件中。在这里,Java将其视为:

    String file = "\"src/main/resources/File.csv\"";
    
        2
  •  1
  •   rocketboy    12 年前
    test.value =src/main/resources/File.csv
    

    您不需要在财产文件中使用双引号来表示连续字符串。

        3
  •  0
  •   Nikhil    10 年前

    您可以编写自己的逻辑来读取财产文件,文件路径中是否有单引号或双引号并不重要

    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;
        }