java實現把一個大檔案切割成N個固定大小的檔案

來源:互聯網
上載者:User

標籤:

    //java實現把一個大檔案切割成N個固定大小的檔案     package com.johnny.test;     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 FenGeFile {             public static final String SUFFIX = “.txt”; // 分割後的檔案名稱尾碼             // 將指定的檔案按著給定的檔案的位元組數進行分割檔案,其中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 = “D:/boss/123.txt”;                     long size = 1024*1024*4;//1K=1024b(位元組)                     String[] fileNames = FenGeFile.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();                     }             }     } 

 

java實現把一個大檔案切割成N個固定大小的檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.