java 输入流可以合并吗_HOW2J Java 文件输入输出流,合并与拆分
//需要所指目錄下確有一個文件供拆分
//多余的另成一個文件
package File;
import java.util.*;
import java.io.*;
public class TestStrem{
public static void main(String[] args) {
int eachSize=100*1024//100k;
File scrFile = new File("d:/javaha/gys.txt");
splitFile(scrFile,eachSize);
}
public static void splitFile(File scrFile,int eachSize) {
if(0==scrFile.length())
throw new RuntimeException("文件長度為0,不可拆分");
byte[] fileConent = new byte[(int)scrFile.length()];
try {
FileInputStream fis =new FileInputStream(scrFile);
fis.read(fileConent);
fis.close();
}
catch(IOException e) {
e.printStackTrace();
}
int fileNumber;
if(fileConent.length % eachSize==0)
fileNumber =(int)(fileConent.length / eachSize);
else
fileNumber =(int)(fileConent.length / eachSize )+ 1;
for(int i=0;i
String eachFilename=scrFile.getName()+"-"+ i;
File eachFile =new File(scrFile.getParent(),eachFilename);
byte[] eachContent;
if(i!=fileNumber-1)
eachContent =Arrays.copyOfRange(fileConent, eachSize*i , eachSize);
else
eachContent =Arrays.copyOfRange(fileConent, eachSize*i , fileConent.length);
try {
FileOutputStream fos =new FileOutputStream(eachFile);
fos.write(eachContent);
fos.close();
System.out.format("輸出子文件%s,其大小是%d字節",eachFile.getAbsolutePath(),eachFile.length());
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
//合并,
package stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.security.auth.DestroyFailedException;
public class TestStream {
public static void main(String[] args) {
murgeFile("d:/", "eclipse.exe");
}
/**
* 合并的思路,就是從eclipse.exe-0開始,讀取到一個文件,就開始寫出到 eclipse.exe中,直到沒有文件可以讀
* @param folder
* 需要合并的文件所處于的目錄
* @param fileName
* 需要合并的文件的名稱
* @throws FileNotFoundException
*/
private static void murgeFile(String folder, String fileName) {
try {
// 合并的目標文件
File destFile = new File(folder, fileName);
FileOutputStream fos = new FileOutputStream(destFile);
int index = 0;
while (true) {
//子文件
File eachFile = new File(folder, fileName + "-" + index++);
//如果子文件不存在了就結束
if (!eachFile.exists())
break;
//讀取子文件的內容
FileInputStream fis = new FileInputStream(eachFile);
byte[] eachContent = new byte[(int) eachFile.length()];
fis.read(eachContent);
fis.close();
//把子文件的內容寫出去
fos.write(eachContent);
fos.flush();
System.out.printf("把子文件 %s寫出到目標文件中%n",eachFile);
}
fos.close();
System.out.printf("最后目標文件的大小:%,d字節" , destFile.length());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java 输入流可以合并吗_HOW2J Java 文件输入输出流,合并与拆分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摩尔庄园手游粉海豚在哪里?
- 下一篇: 红烧鸡腿怎么做好吃啊?