<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    java 文件分割

    Posted on 2009-06-14 23:28 Gavin.lee 閱讀(955) 評論(0)  編輯  收藏 所屬分類: Log && File Operate

    今天一哥們在我電腦上下小說,《七界傳說》 啥玩意我也不知道。我幫忙下的,下完了嚇死我了,接近10M,這玩意放手機里根本沒法看,哥們說要分,完了就開始拖啊,分啊。后來我一想,不如用程序分,分的還均勻。呵呵,google一下,找了段程序,稍調試了一把,測試OK.

    package com.handson.bbs;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    /**
     * **********************************************
     * @description 文件分割器,
     *         將一個文件分割成若干小文件,將多個小文件合并到一個大文件
     * 
    @author Gavin.lee
     * @date Jun 14, 2009    3:05:08 PM
     * 
    @version 1.0
     ***********************************************
     
    */

    public class FileDivisionUniter {

        
    public static final String SUFFIX = ".txt"// 分割后的文件名后綴

        
    /**
         * 分割文件
         * 
    @param fileName 待分割的文件名
         * 
    @param size 小文件的大小,以字節為單位
         * 
    @return 分割后小文件的文件名
         * 
    @throws Exception 分割過程中可能拋出的異常
         
    */

        
    public static String[] divide(String fileName, long size) throws Exception {
            File inFile 
    = new File(fileName);
            
    if (!inFile.exists() || inFile.isDirectory()) {
                
    throw new Exception("指定文件不存在!");
            }

            
    // 獲得被分割文件父文件,將來被分割成的小文件就存放在這個目錄下
            File parentFile = inFile.getParentFile();

            
    // 取得文件的大小
            long fileLength = inFile.length();
            
    if (size <= 0)
                size 
    = fileLength / 2;

            
    // 取得分割后的小文件的數目
            int num = (int) ((fileLength + size - 1/ size);

            
    // 存放分割后的小文件名
            String[] outFileNames = new String[num];

            FileInputStream in 
    = new FileInputStream(inFile);

            
    // 讀輸入文件流的開始和結束下標
            long inEndIndex = 0;
            
    int inBeginIndex = 0;

            
    // 根據要分割的數目分割文件
            for (int outFileIndex = 0; outFileIndex < num; outFileIndex++{
                
    // 對于前outFileIndex-1個文件,大小都是size
                File outFile = new File(parentFile, inFile.getName() + outFileIndex    + SUFFIX);
                FileOutputStream out 
    = new FileOutputStream(outFile);
                inEndIndex 
    += size;
                inEndIndex 
    = (inEndIndex > fileLength) ? fileLength : inEndIndex;
                
    // 從輸入流中讀取字節存儲到輸出流中
                for (; inBeginIndex < inEndIndex; inBeginIndex++)
                    out.write(in.read());
                out.close();
                outFileNames[outFileIndex] 
    = outFile.getAbsolutePath();
            }

            in.close();
            
    return outFileNames;
        }


        
    /**
         * 合并文件
         * 
    @param fileNames 帶合并的文件名,是一個數組
         * 
    @param targerFileName 目標文件名
         * 
    @return 目標文件的全路徑
         * 
    @throws Exception 合并過程中可能拋出的異常
         
    */

        
    public static String unite(String[] fileNames, String targerFileName)
                
    throws Exception {
            File inFile 
    = null;

            File outFile 
    = new File(targerFileName);
            FileOutputStream out 
    = new FileOutputStream(outFile);

            
    for (int i = 0; i < fileNames.length; i++{
                inFile 
    = new File(fileNames[i]);
                FileInputStream in 
    = new FileInputStream(inFile);
                
    int c;
                
    while ((c = in.read()) != -1)
                    out.write(c);
                in.close();
            }

            out.close();
            
    return outFile.getAbsolutePath();
        }


        
    public static void main(String[] args) throws Exception {
            String fileName 
    = "c:/七界傳說.txt";
            
    long size = 1024*1000;
            String[] fileNames 
    = FileDivisionUniter.divide(fileName, size);
            System.out.println(
    "分割文件" + fileName + "結果");
            
    for (int i = 0; i < fileNames.length; i++)
                System.out.println(fileNames[i]);

    //        String newFileName = "c:/newtest.txt";
    //        String arr[] = new String[10];
    //        arr[0] = "c:/七界傳說.txt0.txt";
    //        arr[1] = "c:/七界傳說.txt1.txt";
    //        arr[2] = "c:/七界傳說.txt2.txt";
    //        arr[3] = "c:/七界傳說.txt3.txt";
    //        arr[4] = "c:/七界傳說.txt4.txt";
    //        arr[5] = "c:/七界傳說.txt5.txt";
    //        arr[6] = "c:/七界傳說.txt6.txt";
    //        arr[7] = "c:/七界傳說.txt7.txt";
    //        arr[8] = "c:/七界傳說.txt8.txt";
    //        arr[9] = "c:/七界傳說.txt9.txt";
    //        
    //        System.out.println("合并結果:"+ FileDivisionUniter.unite(arr, newFileName));
        }


    }

    主站蜘蛛池模板: 最新中文字幕免费视频| 亚洲αv在线精品糸列| 亚洲电影在线播放| 久久精品毛片免费观看| 亚洲福利秒拍一区二区| 午夜国产精品免费观看| 亚洲国产日韩精品| 香蕉视频在线观看免费国产婷婷| 亚洲AV无码专区亚洲AV桃| 免费无遮挡无码永久在线观看视频| 亚洲国产欧美日韩精品一区二区三区 | 99久久精品免费视频| 亚洲综合国产精品| 国产情侣激情在线视频免费看| 亚洲欧洲日韩极速播放| 在线视频免费观看www动漫| 免费精品国自产拍在线播放| 国产AV无码专区亚洲AWWW| 国产成人一区二区三区视频免费| 亚洲精品自拍视频| 免费看大黄高清网站视频在线| 色屁屁www影院免费观看视频| 亚洲色爱图小说专区| 国产成人精品免费视频大| 青青青亚洲精品国产| 国产亚洲精品无码成人| 97人妻无码一区二区精品免费| 亚洲AV无码资源在线观看| 亚洲欧洲日产国码无码网站| 120秒男女动态视频免费| 亚洲s码欧洲m码吹潮| 亚洲欧洲美洲无码精品VA| 久久99九九国产免费看小说| 男女猛烈xx00免费视频试看| 久久久亚洲精品国产| 四虎影视免费在线| 成人电影在线免费观看| 亚洲中文字幕精品久久| 久久精品国产亚洲一区二区| 日日AV拍夜夜添久久免费| 久久久久国产精品免费免费不卡|