RandomAccessFile 替换文件内容 并写入

来源:互联网 发布:公安局 网络皮条客 编辑:程序博客网 时间:2024/05/16 04:42
private static boolean modifyFileContent(String filePath, String replaceContent, String regex) {

        //修改文件内容,写入日期
        RandomAccessFile raf = null;

        try {
            raf = new RandomAccessFile(filePath, "rw");
            String line = null;
            long lastPoint = 0; //记住上一次的偏移量
            while ((line = raf.readLine()) != null) {
                final String str = replaceFileContent(line, replaceContent, regex);  //读取文件一行,将匹配正则的字符串替换。
                final long ponit = raf.getFilePointer();
                raf.seek(lastPoint);
                raf.writeBytes(str);
                lastPoint = ponit;  //读取一行,指针指到下一行开头。用作写下一行,偏移量的开始,。
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                raf.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return true;

    }



    /**
     *
     * <p>替换匹配正则的内容。</p>
     *
     * @param srcContent 源字符串
     * @param replaceContent  替换内容
     * @param regex 正则表达式
     * @return boolean
     */
    private static String replaceFileContent(String srcContent, String replaceContent, String regex) {

        final Pattern pattern = Pattern.compile(regex);
        final Matcher matcher = pattern.matcher(srcContent);
        final StringBuffer sb = new StringBuffer();
        if (matcher.find()) {
            matcher.appendReplacement(sb, replaceContent);
        }
        return sb.toString();
    }


0 0
原创粉丝点击