Java BufferedWriter 导出文件/目录列表 .replaceAll 替代方案?

标签 java file filewriter bufferedwriter replaceall

使用 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

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

所需的文本文件输出

名称1.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();
}

关于Java BufferedWriter 导出文件/目录列表 .replaceAll 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43706758/

相关文章:

Java从文件中的任意位置打开流

java - 跳到一行并阅读它

java - 写入新文件时自动创建整个路径

java - 为什么 C 函数不能将正确的参数传递给 java?

java.lang.NullPointerException** 错误?

android - 将任何 mp3 文件保存到我的应用程序中

php - 通过 FTP 上传时文件修改日期/时间发生变化

java - FileWriter 对象引用未按预期被覆盖

java - 将 ArrayList 的内容写入文本文件

java - 使用存储在 ArrayList 中的自定义对象填充 JComboBox