国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java切割大文件方法

2024-07-21 02:52:43
字體:
來源:轉載
供稿:網友
package dividefile;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException; public class dividefile {    public static final String SUFFIX = ".sql"; // 分割后的文件名后綴     // 將指定的文件按著給定的文件的字節數進行分割文件,其中name指的是需要進行分割的文件名,size指的是指定的小文件的大小    public static String[] divide(String name, long size) throws Exception {        File file = new File(name);        if (!file.exists() || (!file.isFile())) {            throw new Exception("指定文件不存在!");        }        // 獲得被分割文件父文件,將來被分割成的小文件便存在這個目錄下        File parentFile = file.getParentFile();        // 取得文件的大小        long fileLength = file.length();         System.out.PRintln("文件大小:" + fileLength + " 字節");         if (size <= 0) {            size = fileLength / 2;        }        // 取得被分割后的小文件的數目        int num = (fileLength % size != 0) ? (int) (fileLength / size + 1)                : (int) (fileLength / size);        // 存放被分割后的小文件名        String[] fileNames = new String[num];        // 輸入文件流,即被分割的文件        FileInputStream in = new FileInputStream(file);        // 讀輸入文件流的開始和結束下標        long end = 0;        int begin = 0;        // 根據要分割的數目輸出文件        for (int i = 0; i < num; i++) {            // 對于前num - 1個小文件,大小都為指定的size            File outFile = new File(parentFile, file.getName() + i + SUFFIX);            // 構建小文件的輸出流            FileOutputStream out = new FileOutputStream(outFile);            // 將結束下標后移size            end += size;            end = (end > fileLength) ? fileLength : end;            // 從輸入流中讀取字節存儲到輸出流中            for (; begin < end; begin++) {                out.write(in.read());            }            out.close();            fileNames[i] = outFile.getAbsolutePath();        }        in.close();        return fileNames;    }     public static void readFileMessage(String fileName) {// 將分割成的小文件中的內容讀出        File file = new File(fileName);        BufferedReader reader = null;        try {            reader = new BufferedReader(new FileReader(file));            String string = null;            // 按行讀取內容,直到讀入null則表示讀取文件結束            while ((string = reader.readLine()) != null) {                System.out.println(string);            }            reader.close();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e1) {                }            }        }    }     public static void main(final String[] args) throws Exception {        String name = "G:/ad.tar/ad/ad_samples.dat";        long size = 1024 * 1024 * 4;// 1K=1024b(字節)        String[] fileNames = dividefile.divide(name, size);        System.out.println("文件" + name + "分割的結果如下:");        for (int i = 0; i < fileNames.length; i++) {            System.out.println(fileNames[i] + "的內容如下:");            // FenGeFile.readFileMessage(fileNames[i]);            System.out.println();        }    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉化市| 当涂县| 开原市| 获嘉县| 张家港市| 苍溪县| 中超| 蒙城县| 北宁市| 峨眉山市| 汾西县| 瑞昌市| 中方县| 南华县| 陆良县| 柏乡县| 威信县| 乌拉特后旗| 酒泉市| 景洪市| 巢湖市| 无为县| 祁东县| 保德县| 永康市| 威信县| 民勤县| 阿尔山市| 郧西县| 桂林市| 象州县| 独山县| 沙坪坝区| 河北省| 大荔县| 盘锦市| 合肥市| 云梦县| 贵德县| 荃湾区| 荆州市|