package com.general; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; /* * @author chenyanwei * @date 22 Jan 2019 21:56:07 * @version 1.0 */ /** * 批量修改目录下的文件的指定字符串 * * @author 18430 * */ public class ModifyFile { public void modifyFile(String directory, String oldStr, String newStr) { RandomAccessFile raf = null; ArrayList<File> list = (ArrayList<File>) getFiles(directory); for (File file : list) { try { raf = new RandomAccessFile(file.getPath(), "rw"); String line = null; long lastPoint = 0; // 记住上一次的偏移量 while ((line = raf.readLine()) != null) { final long ponit = raf.getFilePointer(); if (line.contains(oldStr)) { String str = line.replace(oldStr, newStr); raf.seek(lastPoint); raf.writeBytes(str); } lastPoint = ponit; } } catch (Exception e) { e.printStackTrace(); } finally { try { raf.close(); } catch (IOException e) { e.printStackTrace(); } } } } public List<File> getFiles(String directory) { ArrayList<File> list = new ArrayList<File>(); File file = new File(directory); if (file.exists()) { File[] file1 = file.listFiles(); for (File file2 : file1) { list.add(file2); } } return list; } }