【问题标题】:How to get to a file by passing relative path in java?java - 如何通过在java中传递相对路径来获取文件?
【发布时间】:2013-05-04 14:01:46
【问题描述】:

我想了解“如何通过传递文件或文件夹的相对路径来获取文件?” .示例如下:

代码:

  public class somex {
    public static void main {
       String fileName = System.getProperty("user.dir");   <---This gives me path for the current working directory.
       File file = new File(fileName + "../../xml_tutorial/sample.xlsx" );
       System.out.println(file.getCanonicalPath());         <---This gives me path for the file that is residing in folder called "xml_tutorial".
     }
  }

    >>>> 

在这里,我知道文件位置,因此我能够传递正确的相对路径。并且,设法打印文件路径。我已经删除了“sample.xlsx”并执行了上面的代码;没有失败,它给了我路径名,它与文件存在时的路径相同(即在删除之前)。怎么可能?我在这里期待例外。为什么它不抛出异常?

二、我想对文件名使用正则表达式,比如:“../../xml_tutorial/samp.*”。但这不起作用,它给了我 IOException。为什么它无法识别文件 sample.xlsx ? (注意:这是当文件存在并且百分百确定只有一个名为“sample.xlsx”的文件时)

【问题讨论】:

  • 1.您可以使用 file.exists() 方法检查文件。 2.java不支持通配符,你可以在这里找到答案stackoverflow.com/questions/794381/…
  • 请针对每个问题提出 一个 问题。

标签: java regex file relative-path


【解决方案1】:

我已经删除了“sample.xlsx”并执行了上面的代码;没有失败,它给了我路径名,它与文件存在时的路径相同(即在删除之前)。怎么可能?我在这里期待例外。为什么它不抛出异常?

File 不关心文件是否真的存在。它只是解析路径。无需文件存在即可获取路径

/home/tjc/a/b/c/../../file.txt

...并将其转化为规范形式

/home/tjc/a/file.txt

如果您想知道该路径上的文件是否真的存在,可以使用exists() method


关于第二个不相关的问题:

二、我想对文件名使用正则表达式,比如:“../../xml_tutorial/samp.*”。但这不起作用,它给了我 IOException。为什么它无法识别文件 sample.xlsx ?

File documentation 中没有任何内容表明它支持通配符。如果您想进行搜索,您需要使用list(FilenameFilter)listFiles(FilenameFilter)FilenameFilter 实现,或listFiles(FileFilter)FileFilter 实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2023-03-31
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多