【问题标题】:get path of a file in java在java中获取文件的路径
【发布时间】:2014-12-13 00:51:58
【问题描述】:

我的问题很简单,但我不知道如何解决。 我在文件夹中有文本文件: “C:/aaa/bbb/ccc/ddd/test.txt” 和文本文件文件夹中的一个文件夹中的 excel 文件: “C:/aaa/bbb/ccc/ddd/excelFiles/test.xls” text 和 excel 文件同名。

我希望能够访问这些 excel 文件的路径。 我所做的是: this.file.getParent()+"\\"+"excelFiles"+"\\"+file.getName().substring(0, fileName.indexOf('.'))+".xls"

我收到“字符串索引超出范围”错误。 谢谢你的帮助:)

【问题讨论】:

  • fileName 长什么样子?
  • 哦,我刚刚明白我的错误。我将 absolutePath 放在 fileName 中。这就是为什么我遇到了一些麻烦!谢谢你们的帮助:)

标签: java file path directory


【解决方案1】:

如果我理解您的问题,一种选择是使用 File.getCanonicalPath() 之类的,

try {
    File f = new File("C:/aaa/bbb/ccc/ddd/excelFiles/test.xls");
    System.out.println(f.getCanonicalPath());
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

    【解决方案2】:

    你可能想试试这个 ->

    String dynamicExcelFileName = file.getName().substring(0, fileName.indexOf('.'))

    到一个变量中,并在访问excel文件的路径中使用它。

    通过这种方式,您可以更加确定地检查路径是否在变量中正确捕获,从而减少索引超出范围错误的机会。

    加上代码更具可读性

    【讨论】:

      【解决方案3】:

      查看您的 sn-p,我可以看到您以两种不同的方式访问文件名:

      file.getName().substring(...)
      

      fileName.indexOf(...).
      

      确定点的索引时fileName不为空吗?

      【讨论】:

        【解决方案4】:

        即使不使用FileUtils 等现有库,也可以很容易地实现这一点。

        这三种方法可以为你的文本对象创建对应的ExcelFile对象

        private File getExcelFile(final File txtFile) throws IOException {
            final String path = txtFile.getCanonicalPath();
            final String directory = path.substring(0, path.lastIndexOf(System.getProperty("file.separator")));
            return new File(getExcelSubdirectory(directory), getExcelFilename(txtFile.getName()));
        }
        
        private File getExcelSubdirectory(final String parent) {
            return new File(parent, "excelFiles");
        }
        
        private static String getExcelFilename(final String filename) {
            return filename.substring(0, filename.lastIndexOf('.')) + ".xls";
        }
        

        如果你像这样使用它们:

        File txt = new File("C:/aaa/bbb/ccc/ddd/test.txt");
        System.out.println(txt.getCanonicalPath());
        File excel = getExcelFile(txt);
        System.out.println(excel.getCanonicalPath());
        

        .. 它将打印:

        C:\aaa\bbb\ccc\ddd\test.txt
        C:\aaa\bbb\ccc\ddd\excelFiles\test.xls
        

        【讨论】:

          【解决方案5】:

          this.file.getParent()+"\"+"excelFiles"+"\"+file.getName().substring(0, this.file.getName().indexOf('.'))+" .xls"

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-16
            • 1970-01-01
            • 2011-06-18
            • 2012-03-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多