java-處理大容量文本文件,行內分格符為TAB的方法


以處理某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("你輸入的文件不存在,請正確使用:");
              }
          
    }
}
TransferFile.java

 其中關鍵代碼為:

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分割字符串,再用逗號連接的方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM