Java BufferedWriter 正在导出 file/directory listing .replaceAll 备选方案?

Java BufferedWriter exporting file/directory listing .replaceAll alternative?

在 Java8 (Eclipse IDE) 上使用 BufferedWriter 将给定目录和文件列表导出到文件。这工作正常。

有些文件有特殊字符,如“[”、“]”或扩展名,如“.zip”,我希望在保存文件时删除这些字符。尝试了 .replaceALL,但对如何使这项工作感到困惑。有什么建议吗?

public static void getDirectoryList() throws IOException
{
String path = "C:\Users\";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
File file = new File("DirectoryList.txt");
if (!file.exists()) {
    file.createNewFile();
}
FileWriter fw = new FileWriter(file.getName());
BufferedWriter bw = new BufferedWriter(fw);
for (File f : listOfFiles) {

        // .replaceALL wants to be cast. Is there an alternative to 
        // .replaceAll when listing out a file listing to file.
        // Or, am I doing something silly....
        f = f.replaceAll(".zip", "");
        bw.write(f.getName());
        bw.newLine();
    }
bw.close();
}

当前文本文件输出示例:

[name1].doc <-在将名称保存到文件时尝试删除“[”和“]”。

filename.zip <-在将名称保存到文件时尝试删除“.zip”。

目录名1

目录名2

(保留原文件名和目录名,只是更改保存到文件的结果。)

需要文本文件输出

name1.doc

文件名

目录名1

目录名2

replaceAll不是File的方法,而是String的方法。

for(File f : listOfFiles) {
     String fileName = f.getName();
     fileName = fileName.replaceAll("\.zip", "");
     fileName = fileName.replaceAll("\[", "");
     fileName = fileName.replaceAll("]", "");

     bw.write(fileName);
     bw.newLine();
}

另请注意,当我使用 replaceAll 从文件名中删除“.zip”时,必须对 . 进行转义。那是因为 replaceAll 的第一个参数是一个正则表达式,而点 . 是一个特殊字符。 [.

也一样

有一种更紧凑的方法可以用单个正则表达式做同样的事情

for(File f : new File("").listFiles()) {
     String fileName = f.getName();
     fileName = fileName.replaceAll("\.zip|\[|]", "");

     bw.write(fileName);
     bw.newLine();
}