如何用Java分割大txt文件

Python08

如何用Java分割大txt文件,第1张

import java.io.Fileimport java.io.FileInputStreamimport java.io.FileNotFoundExceptionimport java.io.FileOutputStreamimport java.io.IOExceptionimport java.io.InputStreamimport java.io.OutputStreampublic class FileCutter { /** * *sourceFile:源文件的路径 *targetDirectory:保存文件的目录(例:'C:\\') *prefix:是分割后文件的前缀(例:'2015-09-09') *size:是分隔后单一文件的大小单位是2kb的倍数,size传10,分割后单一文件就是20K。传100,文件就是2M一个。 * **/ public static void cutToMoreFile(String sourceFile, String targetDirectory, String prefix, int size) { //加载源文件 File source = new File(sourceFile) InputStream in = null OutputStream out = null int len = 0 int fileIndex = 1 //设置一次加载的大小 byte[] buffer = new byte[2048] try{//把源文件读到InputStream中in = new FileInputStream(source) //循环while(true){//分割后的文件流 out = new FileOutputStream(targetDirectory + File.separator + prefix + fileIndex++ + ".txt")for(int i = 0i <sizei++) {//如果文件读取完就退回方法。 if((len = in.read(buffer)) != -1) { //写入分割后的文件 out.write(buffer, 0, len) }else { //执行finally内容后,退出方法 return } }} } catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace() } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace() }finally {try {//关系流 in.close()out.close() } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace() } } } }

package xuan

import java.io.File

import java.io.FileInputStream

import java.io.FileOutputStream

import java.io.IOException

import java.io.OutputStream

import java.nio.Buffer

import java.io.BufferedInputStream

import java.io.BufferedOutputStream

public class mp3 {

public static void cutMusic() throws IOException{

File file=new File("E:\\薛之谦 - 那是你离开了北京的生活.flac")

File file2=new File("E:\\music")

FileInputStream fis =new FileInputStream(file)

FileOutputStream fos=null

//if(file2.exists()!=true) {

// file2.mkdirs()

//}

int len=0

int x=0

int y=1020*1024

byte [] one=new byte[y]

if(file.length()%y!=0) {

x=(int)(file.length()/y+1)

}else if(file.length()%y==0) {

x=(int)(file.length()/y)

}

for(int i=1i<=xi++) {

len=fis.read(one)

fos=new FileOutputStream (new File(file2,i+".flac"))

fos.write(one,0,len)

}

fis.close()

fos.close()

}

public static void mergeMusic()throws IOException{

File file=new File("E:\\merge.flac")

File file2=new File("E:\\music")

// if(file.exists()!=true) {

// file.createNewFile()

// }

File[]f=file2.listFiles()

FileInputStream fis=null

FileOutputStream fos=new FileOutputStream(file)

BufferedOutputStream bos =new BufferedOutputStream(fos,1024*1024)

int len=0

for(int i=0i<f.lengthi++) {

fis =new FileInputStream(f[i])

BufferedInputStream bis =new BufferedInputStream(fis,1024*1024)

while((len=bis.read())!=-1) {

bos.write(len)

}

fos.flush()

fis.close()

}

bos.close()

fos.close()

}

public static void main(String[] args) throws IOException{

cutMusic()

mergeMusic()

// TODO Auto-generated method stub

}

}

package demo

import java.io.BufferedInputStream

import java.io.BufferedReader

import java.io.File

import java.io.FileInputStream

import java.io.InputStreamReader

import java.util.ArrayList

import java.util.List

public class DemoApp {

public static void main(String[] args) throws Exception {

// 指定的文件

File file = new File("E:\\Workspaces\\eclipse3.7\\Demo\\src\\test.txt")

// 装载list

List<String> list = new ArrayList<String>()

// 读取文件

FileInputStream fis = new FileInputStream(file)

BufferedReader br = new BufferedReader(new InputStreamReader(fis))

StringBuffer buffer = new StringBuffer()

String line

int i = 0

while ((line = br.readLine()) != null) {

System.out.println(line)

if (i == 0) {

buffer.append(line + "\n")

} else {

// 判断截取点

if (line.substring(0, 1).equals(">")) {

list.add(buffer.toString())

buffer = new StringBuffer()

buffer.append(line + "\n")

} else {

buffer.append(line + "\n")

}

}

i++

}

if (line == null) {

list.add(buffer.toString())

}

// test

System.out.println("--------------------------")

for(int j=0 j<list.size() j++) {

System.out.println( j + ":   " + list.get(j))

System.out.println("-----------------------")

}

}

}