Java语言编写读取文件,过滤其中的非法字符,将正常字符保留,然后写回到原来的文件,从键盘输入需要处理的文件名,怎么才能打开文件进行过滤的呢
import java.io.*;
public class FileFilter {
public static void main(String[] args) {
BufferedReader reader = null;
BufferedWriter writer = null;
try {
System.out.print("文件名:");
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = inputReader.readLine();
File file = new File(fileName);
reader = new BufferedReader(new FileReader(file));
StringBuilder content = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
// 过滤
String filteredLine = filterIllegalCharacters(line);
content.append(filteredLine).append("\n");
}
// 写回文件
writer = new BufferedWriter(new FileWriter(file));
writer.write(content.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static String filterIllegalCharacters(String line) {
return line.replaceAll("\\d", "");
}
首先,我们需要使用Java的File类来读取指定文件的内容,并将其保存到一个字符串变量中。然后,我们需要定义一个方法来过滤非法字符,只保留合法字符。最后,我们使用FileWriter类将过滤后的内容写回原文件。
以下是一个实现这个需求的示例代码:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileFilter {
public static void main(String[] args) {
// 从键盘输入获取需要处理的文件名
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要处理的文件名:");
String fileName = scanner.nextLine();
// 读取文件内容
String content = readFile(fileName);
if (content != null) {
// 过滤非法字符
String filteredContent = filterContent(content);
if (filteredContent != null) {
// 写回原文件
writeFile(fileName, filteredContent);
System.out.println("文件过滤成功!");
} else {
System.out.println("文件过滤失败:过滤后内容为空!");
}
} else {
System.out.println("文件读取失败!");
}
}
private static String readFile(String fileName) {
try {
// 使用Files工具类读取文件内容
byte[] bytes = Files.readAllBytes(Paths.get(fileName));
return new String(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static String filterContent(String content) {
// 进行过滤操作,例如只保留字母和数字,去除其他字符
String filteredContent = content.replaceAll("[^a-zA-Z0-9]", "");
return filteredContent;
}
private static void writeFile(String fileName, String content) {
try {
// 使用FileWriter类将过滤后的内容写回原文件
FileWriter writer = new FileWriter(fileName);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述代码中,我们使用了Java提供的Files类来读取文件内容,并使用FileWriter类将过滤后的内容写回原文件。我们定义了三个方法:readFile用于读取文件内容,filterContent用于过滤非法字符,writeFile用于将过滤后的内容写回原文件。最后,我们在main方法中调用这三个方法,并进行文件名的键盘输入,以实现对指定文件的过滤操作。
注意:以上代码中的文件过滤操作只是一个示例,具体的过滤规则可以根据实际需求进行修改。