Java语言编写读取文件,然后写回到原来的文件,从键盘输入需要处理的文件名,怎么才能打开文件进行过滤的呢

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", "");
    }
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1071537
  • 这篇博客你也可以参考下:Java输入一个文件名和一个字符串,判断该文件中是否存在该字符串,如果存在,输入该字符串所在的行数
  • 同时,你还可以查看手册:java-集合 - 关于使用和扩展Java集合框架的课程。- 聚合操作 代表你对集合进行迭代,这使你能够编写更简洁和有效的代码,处理存储在集合中的元素。 -平行主义 中的内容
  • 除此之外, 这篇博客: Java编程规范中的 一、避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 通过一个引用去调用一个静态方法或静态变量的时候会加大JVM的性能消耗,对JVM来说,会先去检索一下堆中的信息,而且在解释过程中需要额外消耗一些资源的,如果用类名去调用会直接导入到方法区,可以避免堆空间的检索
  • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 创建服务器端接收客户端上线消息小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我们需要使用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方法中调用这三个方法,并进行文件名的键盘输入,以实现对指定文件的过滤操作。

    注意:以上代码中的文件过滤操作只是一个示例,具体的过滤规则可以根据实际需求进行修改。