內蒙古java團隊

          j2se,j2ee開發組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          用JAVA實現文件分隔功能[轉]

          Posted on 2009-06-13 15:31 帥子 閱讀(293) 評論(0)  編輯  收藏 所屬分類: J2EE技術專區
          以下是我寫的幾個用JAVA實現將.txt文件分隔成小文件的程序,供大家參考下
          程序一:
          /**
          ?*?文件分隔
          ?*/
          package?com.basic.io;

          import?java.io.BufferedReader;
          import?java.io.File;
          import?java.io.FileInputStream;
          import?java.io.FileOutputStream;
          import?java.io.FileReader;
          import?java.io.FileWriter;
          import?java.io.IOException;
          import?java.io.InputStreamReader;

          /**
          ?*?@author?Administrator
          ?*
          ?*/
          public?class?FileSeparator?{

          ????/**
          ?????*?按字節分隔
          ?????*?@param?sourceFileUrl?源文件路徑如:c:/a.txt
          ?????*?@param?targetFileUrl?目標文件路徑文件夾(最好在盤符下,我沒有創建文件夾):?c:/
          ?????*/
          ????public?void?separateFileByByte(String?sourceFileUrl,?String?targetFileUrl)?{
          ????????File?sourceFile?=?new?File(sourceFileUrl);
          ????????String?sourceFileName?=?sourceFile.getName().split(".txt")[0];?//獲得源文件名稱
          ????????try?{
          ????????????FileInputStream?fis?=?new?FileInputStream(sourceFile);?//源文件文件流
          ????????????int?temp;
          ????????????FileOutputStream?fos?=?null;?//目標文件文件流
          ????????????int?size?=?0;?//記錄文件大小
          ????????????int?countFile?=?1;?//子文件數目
          ????????????File?targetFile?=?null;
          ????????????do?{
          ???????????????
          ????????????????if?(size?%?100?==?0)?{
          ????????????????????String?targetFileName?=?targetFileUrl?+?sourceFileName?+?countFile?+?".txt";?//目標文件名稱,以源文件名稱加數據命名
          ????????????????????targetFile?=?new?File(targetFileName);
          ????????????????????if?(fos?!=?null)?{
          ????????????????????????fos.flush();?//刷新該流的緩沖
          ????????????????????????fos.close();?//關閉流
          ????????????????????}
          ????????????????????fos?=?new?FileOutputStream(targetFile);
          ????????????????????countFile++;
          ????????????????}
          ???????????????
          ????????????????temp?=?fis.read();?//讀文件
          ????????????????size++;
          ????????????????fos.write(temp);?//寫文件
          ???????????????
          ????????????}?while?(fis.available()>0);????//判斷源文件是否還有流,即有沒有讀完
          ???????????
          ????????????fis.close();
          ????????????fos.flush();
          ????????????fos.close();
          ????????????System.out.println("File?separate?End!"?);
          ????????}?catch?(Exception?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????}
          ???
          ????/**
          ?????*?按字符分隔
          ?????*?@param?sourceFileUrl
          ?????*?@param?targetFileUrl
          ?????*/
          ????public?void?separateFileByChar(String?sourceFileUrl,?String?targetFileUrl)?{
          ????????File?sourceFile?=?new?File(sourceFileUrl);
          ????????String?sourceFileName?=?sourceFile.getName().split(".txt")[0];?//獲得源文件名稱
          ????????try?{
          ????????????FileReader?fr?=?new?FileReader(sourceFile);?//源文件文件流
          ????????????System.out.println("encoding:"?+?fr.getEncoding());
          ????????????int?temp;
          ????????????FileWriter?fw?=?null;?//目標文件文件流
          ????????????int?size?=?0;?//記錄文件大小
          ????????????int?countFile?=?1;?//子文件數目
          ????????????File?targetFile?=?null;
          ????????????do?{
          ???????????????
          ????????????????if?(size?%?100?==?0)?{
          ????????????????????String?targetFileName?=?targetFileUrl?+?sourceFileName?+?countFile?+?".txt";?//目標文件名稱,以源文件名稱加數據命名
          ????????????????????targetFile?=?new?File(targetFileName);
          ????????????????????if?(fw?!=?null)?{
          ????????????????????????fw.flush();?//刷新該流的緩沖
          ????????????????????????fw.close();//關閉流
          ????????????????????}
          ????????????????????fw?=?new?FileWriter(targetFile);
          ????????????????????countFile++;
          ????????????????}
          ???????
          ????????????????temp?=?fr.read();//讀文件
          ????????????????size++;
          ????????????????fw.write(temp);//寫文件
          ???????????????
          ????????????}?while?(temp?!=?-1);//判斷源文件是否還有流,即有沒有讀完
          ???????????
          ????????????fr.close();
          ????????????fw.flush();
          ????????????fw.close();
          ????????????System.out.println("File?separate?End!"?);
          ????????}?catch?(Exception?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????}
          ???
          ????/**
          ?????*?@param?args
          ?????*/
          ????public?static?void?main(String[]?args)?{
          ???????
          ????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
          ????????String?sourceFileUrl?=?null;
          ????????String?targetFileUrl?=?null;
          ????????//輸入源文件路徑
          ????????System.out.println("Source?File?Url:?\t");
          ????????try?{
          ????????????sourceFileUrl?=?br.readLine();
          ????????}?catch?(IOException?e)?{???????????
          ????????????e.printStackTrace();
          ????????}
          ????????//輸入目標文件路徑
          ????????System.out.println("\nTarget?File?Url:?\t");
          ????????try?{
          ????????????targetFileUrl?=?br.readLine();
          ????????}?catch?(IOException?e)?{
          ????????????e.printStackTrace();
          ????????}
          ???????
          ????????System.out.println("Source?File:?"?+?sourceFileUrl?+?"\nTarget?File:?"?+?targetFileUrl);
          ????????FileSeparator?fs?=?new?FileSeparator();
          ????????fs.separateFileByByte(sourceFileUrl,?targetFileUrl);
          ????}

          }
          程序二:
          /**
          ?*?用緩沖流實現文件分隔
          ?*/
          package?com.basic.io;

          import?java.io.*;
          public?class?TestBufferStream?{
          ??public?static?void?main(String[]?args)?{
          ????try?{
          ??????BufferedReader?br?=?new?BufferedReader(new?FileReader("c:/Java編碼規范.txt"));
          ??????BufferedWriter?bw?=?null;
          ??????String?s?=?null;?//單行內容
          ??????int?countLine?=?0;?//總行數
          ??????int?countFile?=?1;?//子文件數
          ??????while((s=br.readLine())!=null){
          ????????if?(countLine?%?50?==?0)?{?
          ????????????if?(bw?!=?null)?{
          ????????????????bw.flush();
          ????????????????bw.close();
          ????????????}
          ????????????bw?=?new?BufferedWriter(new?FileWriter("c:/Java編碼規范"?+?countFile?+?".txt"));
          ????????????countFile++;???????????
          ????????}
          ????????bw.write(s);
          ????????bw.newLine();
          ????????System.out.println(s);
          ????????countLine++;
          ??????}
          ??????System.out.println("countLine:"?+?countLine);
          ?????
          ??????bw.close();
          ??????if(countLine?!=?0){
          ??????????bw.flush();
          ??????????bw.close();
          ????????????????
          ??????}

          ????}?catch?(IOException?e)?{?e.printStackTrace();}
          ??}
          }
          程序三:
          /**
          ?*?用字符流實現文件分隔 
          ?*/
          package?com.basic.io;

          import?java.io.FileReader;
          import?java.io.FileWriter;
          import?java.io.IOException;

          /**
          ?*?@author?Administrator
          ?*
          ?*/
          public?class?TestFileReader?{
          ????public?static?final?int?charSize?=?1024;
          ????/**
          ?????*?@param?args
          ?????*/
          ????public?static?void?main(String[]?args)?{
          ????????//?TODO?Auto-generated?method?stub
          ????????try?{
          ????????????FileReader?fr?=?new?FileReader("c:/Java編碼規范.txt");
          ????????????FileWriter?fw?=?null;
          ????????????char[]?bfc?=?new?char[charSize];
          ????????????int?temp;?//單個字符
          ????????????int?countWord?=?0;?//字符數
          ????????????int?countFile?=?1;?//子文件數
          ????????????while((temp=fr.read())!=-1){
          ??????????????if?(countWord?%?charSize?==?0)?{???????????
          ??????????????????fw?=?new?FileWriter("c:/Java編碼規范"?+?countFile?+?".txt");???????????
          ??????????????????countFile++;
          ??????????????}
          ??????????????bfc[countWord]?=?(char)temp;
          ?????????????
          ??????????????if?(countWord?==?charSize?-1)?{
          ??????????????????fw.write(bfc);
          ??????????????????fw.flush();
          ??????????????????fw.close();
          ??????????????????countWord?=?0;
          ??????????????}????else?{
          ??????????????????countWord++;
          ??????????????}

          ????????????}
          ????????????fr.close();
          ????????????if?(countWord?>?0)?{
          ????????????????fw.write(bfc);
          ????????????????fw.flush();
          ????????????????fw.close();
          ????????????}

          ??????????}?catch?(IOException?e)?{
          ??????????????e.printStackTrace();
          ??????????}
          ????}

          }
          主站蜘蛛池模板: 武穴市| 汶上县| 云龙县| 宜宾市| 正镶白旗| 无极县| 晋中市| 黄陵县| 扬中市| 台山市| 北辰区| 肥乡县| 化德县| 衢州市| 鹤山市| 新蔡县| 沂南县| 福海县| 外汇| 高雄市| 乌拉特前旗| 托克托县| 奉新县| 南昌县| 特克斯县| 崇左市| 太仓市| 乌苏市| 泸州市| 茌平县| 西和县| 南雄市| 兴城市| 得荣县| 苏尼特右旗| 永仁县| 克山县| 莱州市| 南漳县| 乌鲁木齐市| 常德市|