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();
}
在 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();
}