JAVA - 文件切分存储 - FileInputStream 流形式

package stream;
import java.io.*;
/**
 * @author*/
public class TestStream {
    public static void main(String[] args) throws IOException {
        // ***********************    read
        File file = new File("D:/stream/note.txt");
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(file);
            long length = file.length();
            int size = 3*1024;
            byte[] bytes = new byte[size];
            int count = 0;
            if (length<=size) {
            // 一次存储
                myWrite(fileInputStream,bytes,0,size,0);
            } else {
            // 分段存储
                for (long i = length; i > 0; i--) {
                    if (i % size==0) {
                        count++;
                        myWrite(fileInputStream,bytes,0,size,count);
                    }
                    if (i == 1 && length % size!=0){
                        // 处理剩余的 。
                        size = (int) (length - size*count);
                        bytes = new byte[size];
                        count++;
                        myWrite(fileInputStream,bytes,0,size,count);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            fileInputStream.close();
        }
    }
    public static void myWrite(FileInputStream fileInputStream,byte[] bytes,int index,int size,int count) throws IOException {
        fileInputStream.read(bytes, index, size);
        File wroteFile = new File("D:/stream/wrote-"+count+".txt");
        wroteFile.delete();
        FileOutputStream fileOutputStream = new FileOutputStream(wroteFile);
        fileOutputStream.write(bytes);
    }
}

 

 

posted @ 2022-08-06 18:05  武卡卡  阅读(436)  评论(0编辑  收藏  举报