使用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< -trying to remove" ["和"]"将名称保存到文件时。
filename.zip< -trying to remove" .zip"将名称保存到文件时。
directoryname1
directoryname2
(保留原始文件和目录名称,仅更改保存到文件的结果。)
必需的文字文件输出
name1.doc
文件名
directoryname1
directoryname2
答案 0 :(得分: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();
}