java-实现修改文件内容(3)
标签: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 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 ){
// 将该行写入内存
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 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标识开始:
测试后的结果:
java-实现修改文件内容(3)
标签:property cat temp 换行符 src close 图片 comm index
原文地址:https://www.cnblogs.com/lxp-java/p/13284103.html
评论