用Java扫描仪和PrintWriter在几个文本文件中查找并替换一个单词



im试图编写JSP以使用扫描仪读取文件并替换字符串。以下是我在尝试的。我可以使用扫描仪找到字符串,但它不会写入文件。该文件始终为空。我想在文件夹中递归搜索文件,然后更换匹配的字符串。感谢您的帮助。

<%      
            out.println("File Details <br>");
                String resp = single("C:/Users/path");
                out.println(resp);

        %>
        <%!
                public static ArrayList<String> fileList = new ArrayList<String>();
                public static String single(String URL) {
                    System.out.println(URL);
                String respStr="";
                fileList.clear();
                java.io.File file;
                java.io.File dir = new java.io.File(URL);
                String[] list = dir.list();

                for (String filepath :  readDirectoryContents(dir,fileList)) {
                    try {   
                        Path path = Paths.get(filepath);
                        Charset charset = StandardCharsets.UTF_8;
                        String content = new String(Files.readAllBytes(path), charset);
                        String searchStr = "searchtext";
                        Scanner scan = new Scanner(new File(filepath));
                        PrintWriter writer = new PrintWriter(filepath, "UTF-8");
                        while(scan.hasNext()){
                            String line = scan.nextLine().toLowerCase().toString();
                            if(line.contains(searchStr)){
                                content = content.replaceAll("searchtext", "replacetext");

                                respStr += filepath;
                                writer.println(line);
                                writer.printf("pi is %.3fn", 3.1415926);
                            }

                        }
                        writer.close();
                    }
                    catch (Exception e) { 
                         respStr += filepath;
                         continue;
                    }
                }
                return respStr;
        }
        public static ArrayList<String> readDirectoryContents(File dir,ArrayList<String> fileList) {
            try {
                File[] files = dir.listFiles();
                for (File file : files) {
                    if (file.isDirectory()) {
                        readDirectoryContents(file,fileList);
                    } else {                            
                        fileList.add(file.getCanonicalPath());
                    }
                }                   
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
            return fileList;
        }

%>

希望这就是您要寻找的

<%      
        out.println("File Details <br>");
            String resp = single("C:/Users/path");
            out.println(resp);

    %>
    <%!
            public static ArrayList<String> fileList = new ArrayList<String>();
            public static String single(String URL) {
                System.out.println(URL);
            String respStr="";
            fileList.clear();
            java.io.File file;
            java.io.File dir = new java.io.File(URL);
            String[] list = dir.list();

            for (String filepath :  readDirectoryContents(dir,fileList)) {
                try {   
                    Path path = Paths.get(filepath);
                    Charset charset = StandardCharsets.UTF_8;
                    String content = new String(Files.readAllBytes(path), charset);
                    String searchStr = "searchtext";
                    Scanner scan = new Scanner(new File(filepath));
                    PrintWriter writer = new PrintWriter(filepath, "UTF-8");
                        if(content.contains(searchStr)){
                            content = content.replaceAll("searchtext","replacetext");

                            respStr += filepath;
                           // writer.printf("pi is %.3fn", 3.1415926);
                        }

                    writer.println(content);
                    writer.close();
                }
                catch (Exception e) { 
                     respStr += filepath;
                     continue;
                }
            }
            return respStr;
    }
    public static ArrayList<String> readDirectoryContents(File dir,ArrayList<String> fileList) {
        try {
            File[] files = dir.listFiles();
            for (File file : files) {
                if (file.isDirectory()) {
                    readDirectoryContents(file,fileList);
                } else {                            
                    fileList.add(file.getCanonicalPath());
                }
            }                   
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return fileList;
    }
%>

最新更新