生活随笔
收集整理的這篇文章主要介紹了
Java文本文件切割
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前了解過用Java切割文件,采用的是字節流的方式讀取文件,然后發現存在一個問題,就是前面的文件是正常編碼的,后面的文件會亂碼。于是針對個人需求(2.3G的文本文件無法打開),采用按行讀取,即一行一行讀取文件然后再存入到新的文本中。
具體代碼如下:
/*** * @Description 文件分割* @param src 分割文件路徑* @param maxline 最大行數(即每個文件中存儲的行數)* @throws IOException*/public static void splitFileDemo(String path,
int maxline)
throws IOException {FileInputStream fis =
new FileInputStream(path);InputStreamReader isr =
new InputStreamReader(fis,
"UTF-8");BufferedReader br =
new BufferedReader(isr);String fileName = path.substring(
0, path.indexOf(
"."));String endName = path.substring(path.lastIndexOf(
"."));
try {
int i =
0;
boolean end =
false;
while (
true) {
if (end)
break;StringBuffer sb =
new StringBuffer();sb.append(fileName);sb.append(
"_data");sb.append(i);sb.append(endName);System.out.println(sb.toString());FileOutputStream fos =
new FileOutputStream(
new File(sb.toString()));OutputStreamWriter osw =
new OutputStreamWriter(fos,
"UTF-8");BufferedWriter bw =
new BufferedWriter(osw);String line =
"";
int m =
1;
while((line = br.readLine())!=
null ){bw.write(line+
"\t\n");
if(m>=maxline){
break;} m++;}
if(m<maxline)end =
true;i++;bw.close();osw.close();fos.close();}}
catch (Exception e) {e.printStackTrace();}
finally {br.close();isr.close();fis.close();}System.out.println(
"--- 文件分割完成 ---");}
測試代碼:
import java.io.IOException;
public class TestSplitByLine {/*** @param args* @throws IOException */public static void main(String[] args)
throws IOException {CopyOfsplitFile_MergeFileByLine.splitFileDemo(
"E:\\TestData\\splitTest\\hello.txt",
4);}}
測試結果:
總結
以上是生活随笔為你收集整理的Java文本文件切割的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。