具有绝对路径的linux环境中的新文件

时间:2018-06-04 13:54:34

标签: java linux file path absolute

这是问题所在:

  1. 正确检索我们要分析的文件夹的路径。
  2. 我们为该文件夹创建文件(使用suolutely AbsolutePath)。现在打印AbsolutePath会在原始路径中添加前缀。
  3. getPath中的内容应该是getAbsolutePath中的内容。
  4. 添加到路径的是运行JVM的目录...我们提供的绝对路径被错误地解释为相对路径。
  5. 我们无法检测Ep中的文件,因为文件路径不存在。
  6. 我尝试使用Paths.get(string)Paths.get(URI)Paths.get(".").relativize(Path other)等进行创建。始终使用相同的结果。

    logger.info("referencePattern.getLocation().getYearFolder(year): "
        + referencePattern.getLocation().getYearFolder(year)); 
    
    File rootFolder = new File(referencePattern.getLocation().getYearFolder(year));
    logger.info("rootFolder.getAbsolutePath(): " + rootFolder.getAbsolutePath());
    
    logger.info("rootFolder.getPath(): " + rootFolder.getPath());
    
    logger.info("System.getProperty(\"user.dir\"): " +     System.getProperty("user.dir"));
    
    File[] files = rootFolder.listFiles(filter);
    

    输出:

    referencePattern.getLocation().getYearFolder(year): /dvl/app/srs/tomcat/data/dg/ep/docs_autres/commeenne/com/2018/
    rootFolder.getAbsolutePath(): /dvl/app/srs/tomcat/temp//dvl/app/srs/tomcat/data/dg/ep/docs_autres/commeenne/com/2018
    rootFolder.getPath(): /dvl/app/srs/tomcat/data/dg/ep/docs_autres/commeenne/com/2018
    System.getProperty("user.dir"): /dvl/app/srs/tomcat/temp
    

1 个答案:

答案 0 :(得分:0)

来自comment

  

getYearFolder(year)将以下内容写入日志:

     

/dvl/app/srs/tomcat/data/ep/docs_autres/commeenne/com/2018/

     

getYearFolder(year).getBytes("UTF-8")写道:

     

[36, 123, 115, 121, 115, 58, 117, 115, 101, 114, 46, 104, 111, 109, 101, 125, 47, 100, 97, 116, 97, 47, ...]

显示的字节代表字符串:

${sys:user.home}/data/

似乎logger.info(...)正在进行替换,将${sys:user.home}替换为记录输出中的/dvl/app/srs/tomcat

在Java代码中看到的实际值是${sys:user.home}/data/ep/docs_autres/commeenne/com/2018/,它不以/开头,因此被视为相对路径,因此getAbsolutePath()为当前目录的前缀({{ 1}}),导致:

/dvl/app/srs/tomcat/temp

然后记录器执行替换:

/dvl/app/srs/tomcat/temp/${sys:user.home}/data/ep/docs_autres/commeenne/com/2018/

需要考虑的事项:

  • 如果/dvl/app/srs/tomcat/temp//dvl/app/srs/tomcat/data/ep/docs_autres/commeenne/com/2018/应该返回文件路径,为什么会返回getYearFolder(year)

  • 在什么时候(代码中的哪个地方)${sys:user.home}应该被替换? 确实需要在调用 ${sys:user.home}之前

  • 如果getAbsolutePath()返回的路径已经被认为是绝对路径,为什么要调用getAbsolutePath()

这些问题的答案应该为如何解决问题提供指导。