Java - 从文件夹获取不带扩展名的文件名

问题描述 投票:0回答:5

我使用此代码来获取文件夹内文件的绝对路径

public void addFiles(String fileFolder){
        ArrayList<String> files = new ArrayList<String>();     
        fileOp.getFiles(fileFolder, files);
}

但我只想获取文件的文件名(不带扩展名)。我该怎么做?

java filenames
5个回答
2
投票

我认为不存在这样的方法。您可以获取文件名并获取

.
的最后一个索引,并截断之后的内容,并获取
File.separator
的最后一个索引并删除之前的内容。

您已获得文件名。

或者您可以使用

apache commons IO
中的 FilenameUtils 并使用以下

FilenameUtils.removeExtension(fileName);


0
投票

此代码将完成删除文件扩展名和打印名称的工作:

      public static void main(String[] args) {
        String path = "C:\\Users\\abc\\some";
        File folder = new File(path);
        File[] files = folder.listFiles();
        String fileName;
        int lastPeriodPos;
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
                fileName = files[i].getName();
                lastPeriodPos = fileName.lastIndexOf('.');
                if (lastPeriodPos > 0)
                fileName = fileName.substring(0, lastPeriodPos);
                System.out.println("File name is " + fileName);
            }
        }
    }

如果您对标准库没问题,那么请使用 Apache Common,因为它有现成的方法。


0
投票

有一个非常好的方法可以做到这一点 - 您可以使用 FilenameUtils.removeExtension

另请参阅:如何从字符串中修剪文件扩展名


0
投票
String filePath = "/storage/emulated/0/Android/data/myAppPackageName/files/Pictures/JPEG_20180813_124701_-894962406.jpg"


String nameWithoutExtension = Files.getNameWithoutExtension(filePath);

0
投票

如果您的项目使用 Spring 您可以使用:

import org.springframework.util.StringUtils;
// …
StringUtils.stripFilenameExtension("/tmp/myFile.txt") // → "/tmp/myFile"

NB:此方法在处理点文件时有其局限性,对于

/tmp/
,它将返回
/tmp/.config
(来自 commons-io 的
getBaseName()
也有同样的问题
顺便说一句)。


这篇 Baeldung 文章提出了这个漂亮的两行(基本上),声称适用于所有情况:

public static String removeFileExtension(String filename, boolean removeAllExtensions) {
    if (filename == null || filename.isEmpty()) {
        return filename;
    }

    String extPattern = "(?<!^)[.]" + (removeAllExtensions ? ".*" : "[^.]*$");
    return filename.replaceAll(extPattern, "");
}
© www.soinside.com 2019 - 2024. All rights reserved.