以處理某sql文件為例
源文件中行格式為:
123456 7895433 xxxxx yyyyy zzzzz
行間分隔符為 TAB.
轉換完后文件中行的格式為:
123456,7895433,xxxxx,yyyyy,zzzzz

package tool; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; public class TransferFile { public static void main(String[] args) throws IOException { File f=new File("F:/mernis/data_dump.sql"); File filewrite=new File("F:/mernis/mernis-test.txt"); int count=0; if(f.exists()) { FileReader read=new FileReader(f); BufferedReader buff=new BufferedReader(read); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filewrite, true))); boolean isEnd=false; int i=0; while(!isEnd) { String line; i++; try { line = buff.readLine(); if(line==null) { isEnd=true; } else { if (i>=76&&i<=49611784) { String[] lineArr = line.split("\\t"); String newline=""; for (int j = 0; j < lineArr.length; j++) { if (j<lineArr.length) { newline=newline+lineArr[j]+","; } else newline=newline+lineArr[j]; } out.write(newline+"\r\n"); } count++; // if (i==100) { // return ; // } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("文件共有"+count+"行"); buff.close(); out.close(); } else { System.out.println("你輸入的文件不存在,請正確使用:"); } } }
其中關鍵代碼為:
String[] lineArr = line.split("\\t"); String newline=""; for (int j = 0; j < lineArr.length; j++) { if (j<lineArr.length) { newline=newline+lineArr[j]+","; } else newline=newline+lineArr[j]; }
過程中曾嘗試用line.replace("\\t",",")的方法將TAB替換為",",但是始終不成功,所以這里采用先用TAB分割字符串,再用逗號連接的方式。