当前位置:首页 » 编程语言 » java分割文件

java分割文件

发布时间: 2022-09-09 04:29:07

Ⅰ 如何用java把任意大小的文件分割为10份,然后再合并

java.io.File 得到文件长度,分成10份的字节数(不完全是平均的)。。。。。使用FileInputStream读入、FileOutputStream写到10外文件 。。。。。。。。。。。。

合并 时,文件流 反操作 。。。。。。

Ⅱ 求java高手,java读取txt中内容,按内容拆分成多个txt,如下图,拆分成两个txt文件

没有定拆分规则 以下代码是前5个行为一个txt 其余的为另外一个txt

packagecom.kidd.;

importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.Scanner;

publicclass{

publicstaticvoidmain(String[]args){
Filefile=newFile("D:"+File.separator+"t1.txt");

String[]ss=readTxt(file);

if(ss==null||ss.length==0){
System.out.println("读取txt内容发生错误,txt内容可能为空.");
return;
}

file=newFile("D:"+File.separator+"1.txt");

if(!writeTxt(file,ss,0,5)){
System.out.println("写入第一个txt发生了错误.终止");
return;
}

file=newFile("D:"+File.separator+"2.txt");
if(!writeTxt(file,ss,5)){
System.out.println("写入第二个txt发生了错误.终止");
return;
}

}

/**
*写出数组内容从start开始的所有内容到txt文件
*@paramfile待写出的txt文件的File形式
*@paramss数组对象
*@paramstart开始位置
*@return成功返回true发生错误返回false
*/
privatestaticbooleanwriteTxt(Filefile,String[]ss,intstart){
returnwriteTxt(file,ss,start,ss.length-start);
}

/**
*写出数组内容从start位置开始共写出length个到txt文件
*@paramfile待写出的txt文件的File形式
*@paramss数组对象
*@paramstart开始位置
*@paramlength写出长度
*@return成功返回true发生错误返回false
*/
privatestaticbooleanwriteTxt(Filefile,String[]ss,intstart,intlength){
FileWriterfWriter;
try{
fWriter=newFileWriter(file,false);
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}

try{
for(inti=start,k=ss.length;i<k&&i<start+length;i++){
fWriter.write(ss[i]+" ");
}

}catch(IOExceptione){
e.printStackTrace();
if(!closeFileWriter(fWriter)){
fWriter=null;
}
returnfalse;
}

if(!closeFileWriter(fWriter)){
fWriter=null;
}

returntrue;

}

/**
*关闭文件流
*@paramfWriter
*@return成功关闭返回true,发生错误返回false
*/
(FileWriterfWriter){
if(fWriter==null){
returnfalse;
}
try{
fWriter.close();
}catch(IOExceptione){
e.printStackTrace();
}
returntrue;
}

/**
*读取txt文件内容,返回该文本内容的String[]形式
*@paramfiletxt文件的File形式
*@return该文本内容的String[]形式若读取发生错误则返回null
*/
privatestaticString[]readTxt(Filefile){
Scannerscanner;
try{
scanner=newScanner(file);
}catch(FileNotFoundExceptione){
e.printStackTrace();
returnnull;
}

Stringstring="";

/**
*读取到的每一行用,分割
*/
while(scanner.hasNext()){
string+=scanner.nextLine()+",";
}

scanner.close();

returnstring.split(",");
}

}

Ⅲ java下文本文件读取并分割

packagedemo;

importjava.io.BufferedInputStream;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.List;

publicclassDemoApp{

publicstaticvoidmain(String[]args)throwsException{
//指定的文件
Filefile=newFile("E:\Workspaces\eclipse3.7\Demo\src\test.txt");
//装载list
List<String>list=newArrayList<String>();
//读取文件
FileInputStreamfis=newFileInputStream(file);
BufferedReaderbr=newBufferedReader(newInputStreamReader(fis));
StringBufferbuffer=newStringBuffer();
Stringline;
inti=0;
while((line=br.readLine())!=null){
System.out.println(line);
if(i==0){
buffer.append(line+" ");
}else{
//判断截取点
if(line.substring(0,1).equals(">")){
list.add(buffer.toString());
buffer=newStringBuffer();
buffer.append(line+" ");
}else{
buffer.append(line+" ");
}
}
i++;
}

if(line==null){
list.add(buffer.toString());
}

//test
System.out.println("--------------------------");
for(intj=0;j<list.size();j++){
System.out.println(j+":"+list.get(j));
System.out.println("-----------------------");
}
}

}

Ⅳ java如何将一个文件从某个字节处将文件分为两个文件

使用RandomAccessFile这个类,它可以任意读取文件随意位置的内容,先跳到485484b的位置,再使用读写流把后面的内容写到新的一个文件中即可

Ⅳ java文本分割并存入数组

以下代码仅供参考

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;

publicclassMain{

Ant[]ants;

publicMain(){
ants=newAnt[100];
}

publicstaticvoidmain(String[]args){
Filef=newFile("D:\123.txt");
Mainmain=newMain();
main.decodeFile(f);

for(inti=0,k=main.ants.length;i<k;i++){
System.out.println(main.ants[i]);
}

}

publicbooleandecodeFile(Filef){
BufferedReaderbr;
try{
br=newBufferedReader(newInputStreamReader(newFileInputStream(f)));
StringlineString="";

inttxtNameIndex;
Antant;
String[]antString;
StringtxtName;
String[]childString;
intindex=0;
while((lineString=br.readLine())!=null&&index<100){
antString=lineString.split("#");

ant=newAnt();
txtNameIndex=antString[0].indexOf("");
txtName=antString[0].substring(0,txtNameIndex);

antString[0]=antString[0].substring(txtNameIndex+1);

for(inti=0,k=antString.length;i<k;i++){
ant=newAnt();
childString=antString[i].split("/");
ant.txtID=index+1;
ant.txtName=txtName;
ant.keyword=childString[0];
ant.style=childString[1];
ant.wWeight=Double.parseDouble(childString[2]);
ant.wCount=Integer.parseInt(childString[3]);
ants[index]=ant;
index++;
}

}

br.close();

}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
returntrue;
}

}

classAnt{
inttxtID;
StringtxtName;
Stringkeyword;
Stringstyle;
doublewWeight;
intwCount;

@Override
publicStringtoString(){
return"[txtID:"+txtID+",txtName:"+txtName+",keyword:"+keyword+",style:"+style+",wWeight:"
+wWeight+",wCount:"+wCount+"]";
}
}

Ⅵ 怎样用JAVA流来分割一个mp3文件代码

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=1;i<=x;i++) {
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=0;i<f.length;i++) {
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
}
}

Ⅶ 如何用Java分割大txt文件

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public 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 = 0; i < size; i++) { //如果文件读取完就退回方法。 if((len = in.read(buffer)) != -1) { //写入分割后的文件 out.write(buffer, 0, len); }else { //执行finally内容后,退出方法 return; } } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { //关系流 in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

Ⅷ JAVA怎么实现按行数分割文件

import java.io.*;
public class SegFile{
/**
*根据需求,直接调用静态方法start来执行操作
*参数:
* rows 为多少行一个文件 int 类型
* sourceFilePath 为源文件路径 String 类型
* targetDirectoryPath 为文件分割后存放的目标目录 String 类型
* ---分割后的文件名为索引号(从0开始)加'_'加源文件名,例如源文件名为test.txt,则分割后文件名为0_test.txt,以此类推
*/
public static void start(int rows,String sourceFilePath,String targetDirectoryPath){
File sourceFile = new File(sourceFilePath);
File targetFile = new File(targetDirectoryPath);
if(!sourceFile.exists()||rows<=0||sourceFile.isDirectory()){
System.out.println("源文件不存在或者输入了错误的行数");
return;
}
if(targetFile.exists()){
if(!targetFile.isDirectory()){
System.out.println("目标文件夹错误,不是一个文件夹");
return;
}
}else{
targetFile.mkdirs();
}
try{
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
BufferedWriter bw = null;
String str = "";
String tempData = br.readLine();
int i=1,s=0;
while(tempData!=null){
str += tempData+"\r\n";
if(i%rows==0){
bw = new BufferedWriter(new FileWriter(new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName())));
bw.write(str);
bw.close();
str = "";
s += 1;
}
i++;
tempData = br.readLine();
}
if((i-1)%rows!=0){
bw = new BufferedWriter(new FileWriter(new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName())));
bw.write(str);
bw.close();
br.close();
s += 1;
}
System.out.println("文件分割结束,共分割成了"+s+"个文件");
}catch(Exception e){}
}
//测试

public static void main(String args[]){
SegFile.start(11,"d:/test/test.txt","d:/test/test/");
}

}
/*
把代码改了下,先前的代码在行数刚好分完的情况下会多分一个空白文件,现在不存在这个问题了
*/

Ⅸ java中,如何将一个文件截断,只保留前一部分

importjava.io.FileInputStream;
importjava.io.FileOutputStream;
publicclassDemo{
publicstaticvoidmain(String[]args)throwsException{
//比如这个文件有2k,每次截断1kb
FileInputStreamfis=newFileInputStream("D:\CopyDemo.java");
byte[]b=newbyte[1024];//1024就表示1kb
intlen=0;
intopar=0;
while((len=fis.read(b))!=-1){//读取文件
//将截断的碎片文件存储到硬盘中
FileOutputStreamfos=newFileOutputStream("D:\"+(++opar)+".opar");
fos.write(b,0,len);
fos.close();
}
fis.close();
}
}

Ⅹ 用java如何实现将大的日志文件分隔成小文件

请使用LOG4J 组件去实现日志 记录 该组件提供 配置格式 时间 大小等。

比如如下配置

### set log levels ###
log4j.rootLogger =debug,stdout,D,E

###CONSOLE###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n

###FILE###
log4j.appender.D =org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:\\logs\\log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %l:%t:%r ] - [ %p ] %m%n

###ERROR TO ANOTHER FILE###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = D:\\logs\\error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %l:%t:%r ] - [ %p ] %m%n

热点内容
成都少儿编程培训机构 发布:2025-01-13 03:21:20 浏览:88
linuxatop 发布:2025-01-13 03:19:01 浏览:438
彩38源码下载 发布:2025-01-13 03:16:51 浏览:971
手机app缓存可不可以删 发布:2025-01-13 03:10:46 浏览:937
安卓怎么显示第五个人图鉴 发布:2025-01-13 03:03:23 浏览:922
内网访问很慢 发布:2025-01-13 03:01:01 浏览:454
魔兽脚本p闪 发布:2025-01-13 02:58:40 浏览:291
java递减 发布:2025-01-13 02:54:40 浏览:490
决策树的算法例题 发布:2025-01-13 02:53:15 浏览:448
脚本四要素 发布:2025-01-13 02:40:18 浏览:930