當前位置:首頁 » 編程語言 » 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 02:40:18 瀏覽:929
編譯過程序後無法運行 發布:2025-01-13 02:40:16 瀏覽:306
c語言8位元組 發布:2025-01-13 02:38:51 瀏覽:707
ps3iso文件夾 發布:2025-01-13 02:10:09 瀏覽:291
從qq里如何看到自己的登錄密碼 發布:2025-01-13 02:10:01 瀏覽:433
文明重啟為什麼會有伺服器維護 發布:2025-01-13 02:00:14 瀏覽:353
凈值人群怎麼配置資產 發布:2025-01-13 01:42:07 瀏覽:463
android顯示時間 發布:2025-01-13 01:42:06 瀏覽:5
php微信公眾號開發教程 發布:2025-01-13 01:39:28 瀏覽:191
傳奇攻倍腳本 發布:2025-01-13 01:28:58 瀏覽:511