标签:property cat temp 换行符 src close 图片 comm index
本章节是java实现对文本数据的中间部分进行插入,文本数据集合插入,直接上代码把:
import org.apache.commons.io.IOUtils; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; public class ToDatasUtils { /** * 修改SM.dat、XE.dat中 1-10组棒位动态控制 * @param path * @param list */ public static void toWriteUserTab(String path, List<String> list){ FileReader in = null; LineNumberReader reader = null; File sourceFile = new File(path); // 内存流, 作为临时流 CharArrayWriter tempStream = null; FileWriter out = null; try{ if(!sourceFile.exists()){ return;x } // 内存流, 作为临时流 tempStream = new CharArrayWriter(); in = new FileReader(sourceFile); reader = new LineNumberReader(in); String s = ""; int dataIndex = 0; int lines = 0; while (s != null) { lines++; s = reader.readLine(); if(lines <= 11){ // 将该行写入内存 tempStream.write(s); // 添加换行符 tempStream.append(System.getProperty("line.separator")); }else { //获取最后一部分开始的行数 if(s.contains("IMOV=")){ dataIndex = lines; break; } } } //将需要的几个写入txt中去 for (String s1 : list) { tempStream.write( " "+s1+"," ); tempStream.append(System.getProperty("line.separator")); } lines = 0; s = ""; in = new FileReader(sourceFile); reader = new LineNumberReader(in); while (s != null) { lines++; s = reader.readLine(); if(lines >= dataIndex && lines <= getFileLineNum(path)){ // 将该行写入内存 tempStream.write(s); // 添加换行符 tempStream.append(System.getProperty("line.separator")); } } IOUtils.closeQuietly(reader); IOUtils.closeQuietly(in); }catch (Exception e){ e.printStackTrace(); }finally { // 将内存中的流 写入 文件 try { out = new FileWriter(path); tempStream.writeTo(out); } catch (IOException e) { e.printStackTrace(); }finally { IOUtils.closeQuietly(out); IOUtils.closeQuietly(tempStream); } } } //获取文本最大行数 public static long getFileLineNum(String filePath) { try { return Files.lines(Paths.get(filePath)).count(); } catch (IOException e) { return -1; } } public static void main(String[] args) { List<String> dataList = new ArrayList<>(); dataList.add("1*-100,-90,4*0"); dataList.add("2*-100,-90,4*0"); dataList.add("3*-100,-90,4*0"); dataList.add("8*-100,-90,4*0"); dataList.add("8*-100,-90,4*0"); toWriteUserTab("C:\\Users\\lxp\\Desktop\\11\\SM.dat",dataList); } }
结果图如下:分为3部分 中间是要插入的数据集合,第3部分以IMOV标识开始:
测试后的结果:
标签:property cat temp 换行符 src close 图片 comm index
原文地址:https://www.cnblogs.com/lxp-java/p/13284103.html