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 @   武卡卡  阅读(441)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示