有104个一样格式的文件只是记录数不同
改为这个模式
把最后的2改为4
也就是2表示两条记录,4表示总的记录(包括第一行和最后一行)
@Test
public void test4() throws Exception{
String floderpath="D:\\input\\";
/*String filename="ACS-4_GDC2_20171011_01.csv";
String filepath=floderpath+filename;*/
File floder=new File(floderpath);
File [] files=null;
try{
if(!floder.isDirectory()){
System.out.println("不存在");
}
files=floder.listFiles();
System.out.println(files.toString());
if(files.length==0){
System.out.println("文件夹无文件");
}
}catch(Exception e){
System.out.println("----------------");
}
for(int j=0;j<files.length;j++){
File file=files[j];
String filepath2=file.getPath();
List list=getFilepathString(filepath2);
try{
isCorrentformat(list);
int rowNom= list.size();
// System.out.println(list.get(rowNom-1));
String lastLine= list.get(rowNom-1).toString();
// System.out.println(lastLine.charAt(2));
int number= StringCharToNumber(lastLine,2);
if(number!=list.size()){
String rowNomStr=rowNom+"";
StringBuilder sb=new StringBuilder(lastLine);
sb.replace(2, 3, rowNomStr);//2 start 3 end not contains 2 ,contains 3
// sb.replace(2, 3, list.size()+"");
System.out.println(sb);
System.out.println(list);
list.remove(list.size()-1);
list.add(sb);
System.out.println(list);
// File file=new File(filepath);
file.delete();
file.createNewFile();
if(writeToFile(file,list)){
System.out.println("success ---------");
}else{
System.out.println("error ------");
}
}
else{
System.out.println("文件不需要更改");
}
}catch(Exception e){
System.out.println("file format correct !!!");
}
}
}
/**
* 获取文件的内容
* @param filepath
* @return
*/
public List getFilepathString(String filepath){
BufferedReader br=null;
List<String> list=null;
try{
list=new ArrayList<String>();
br=new BufferedReader(new FileReader(filepath));
String temp;
while((temp=br.readLine())!=null){
list.add(temp);
}
}catch(IOException e){
System.out.println("getRowNum error ");
}
finally{
if(null !=br){
try{
br.close();
}catch(IOException e){
System.out.println("br close error");
}
}
}
System.out.println("File's size:"+list.size());
return list;
}
/**
* 写入文件并换行
* @param file
* @param list
* @return
* @throws IOException
*/
public boolean writeToFile(File file,List list) throws IOException{
for(int i=0;i<list.size();i++){
String s=list.get(i)+"\r\n";
FileOutputStream fos=new FileOutputStream(file,true);
PrintStream ps=new PrintStream(fos);
System.out.println(s);
ps.print(s);
ps.close();
}
return true;
}
/*
* 文件格式是否正确
*/
public boolean isCorrentformat(List list){
try{
String str=list.get(list.size()-1)+"";
if(StringCharToStr(str,0).equals("9")){
return true;
}
}catch(Exception e){
System.out.println("file format error");
}
return false;
}
/**
* String 的某一个字符转换成Integer
* @param c
* @return Integer
*/
public Integer StringCharToNumber(String s,int index){
char c=s.charAt(index);
char[] charArray = {c};
String replaceStr=new String(charArray);
int number =Integer.parseInt(replaceStr);
System.out.println(number);
return number;
}
/**
* String 的某一个字符转换成String
* @param c
* @return Integer
*/
public String StringCharToStr(String s,int index){
char c=s.charAt(index);
char[] charArray={c};
String replaceStr=new String(charArray);
return replaceStr;
}
处理多个文件就需要先处理一个文件再通过遍历处理所有的文件
逻辑就是把一个文件的所有内容临时保存到List里面,每个list.get(i)就是文件的每一行数据,再删除原来的文件把文件名存到String里,然后把数据处理后通过File类新建一个文件再把List写入到新文件(每一行需要换行)
版权声明:本文为qq_33366229原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。