The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(11)

          我參與的團(tuán)隊(duì)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          import java.io.BufferedReader;
           
          import java.io.File;
           
          import java.io.FileInputStream;
           
          import java.io.IOException;
           
          import java.io.RandomAccessFile;
           
          import java.nio.ByteBuffer;
           
          import java.nio.channels.FileChannel;
           
           
           
          public class TestNio {
           
           
           
           
           
              
          public static void main(String args[]) throws Exception{
           
           
           
              
          //String infile = "D:\\workspace\\test\\usagetracking.log";
           
              
          //FileInputStream fin= new FileInputStream(infile);
           
              
          //FileChannel fcin = fin.getChannel();
           
           
           
              
          int bufSize = 100;
           
              File fin 
          = new File("D:\\workspace\\test\\usagetracking.log");
           
              File fout 
          = new File("D:\\workspace\\test\\usagetracking2.log");
           
           
           
              FileChannel fcin 
          = new RandomAccessFile(fin, "r").getChannel();
           
              ByteBuffer rBuffer 
          = ByteBuffer.allocate(bufSize);
           
           
           
              FileChannel fcout 
          = new RandomAccessFile(fout, "rws").getChannel();
           
              ByteBuffer wBuffer 
          = ByteBuffer.allocateDirect(bufSize);
           
           
           
           
           
              readFileByLine(bufSize, fcin, rBuffer, fcout, wBuffer);
           
           
           
              System.out.print(
          "OK!!!");
           
              }
           
           
           
              
          public static void readFileByLine(int bufSize, FileChannel fcin, ByteBuffer rBuffer, FileChannel fcout, ByteBuffer wBuffer){
           
                  String enterStr 
          = "\n";
           
                  
          try{
           
                  
          byte[] bs = new byte[bufSize];
           
           
           
                  
          int size = 0;
           
                  StringBuffer strBuf 
          = new StringBuffer("");
           
                  
          //while((size = fcin.read(buffer)) != -1){
           
                  
          while(fcin.read(rBuffer) != -1){
           
                        
          int rSize = rBuffer.position();
           
                        rBuffer.rewind();
           
                        rBuffer.get(bs);
           
                        rBuffer.clear();
           
                        String tempString 
          = new String(bs, 0, rSize);
           
                        
          //System.out.print(tempString);
           
                        
          //System.out.print("<200>");
           
           
           
                        
          int fromIndex = 0;
           
                        
          int endIndex = 0;
           
                        
          while((endIndex = tempString.indexOf(enterStr, fromIndex)) != -1){
           
                         String line 
          = tempString.substring(fromIndex, endIndex);
           
                         line 
          = new String(strBuf.toString() + line);
           
                         
          //System.out.print(line);
           
                         
          //System.out.print("</over/>");
           
                         
          //write to anthone file
           
                         writeFileByLine(fcout, wBuffer, line);
           
           
           
                          
           
                         strBuf.delete(
          0, strBuf.length());
           
                         fromIndex 
          = endIndex + 1;
           
                        }
           
                        
          if(rSize > tempString.length()){
           
                        strBuf.append(tempString.substring(fromIndex, tempString.length()));
           
                        }
          else{
           
                        strBuf.append(tempString.substring(fromIndex, rSize));
           
                        }
           
                  }
           
                  } 
          catch (IOException e) {
           
                  
          // TODO Auto-generated catch block
           
                  e.printStackTrace();
           
                  }
           
              }
           
           
           
              
          public static void writeFileByLine(FileChannel fcout, ByteBuffer wBuffer, String line){
           
                  
          try {
           
                      
          //write on file head
           
                      
          //fcout.write(wBuffer.wrap(line.getBytes()));
           
                      
          //wirte append file on foot
           
                      fcout.write(wBuffer.wrap(line.getBytes()), fcout.size());
           
           
           
                  } 
          catch (IOException e) {
           
                      
          // TODO Auto-generated catch block
           
                      e.printStackTrace();
           
                  }
           
              }
           
           
           
          }
           
          posted on 2013-12-17 15:14 Eric_jiang 閱讀(1798) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 姚安县| 特克斯县| 凌海市| 会东县| 田阳县| 和龙市| 房产| 岳阳市| 库尔勒市| 长子县| 盐城市| 平南县| 德格县| 日土县| 察哈| 陇川县| 郁南县| 息烽县| 广南县| 高密市| 灵璧县| 大丰市| 维西| 洪江市| 阜阳市| 乌兰察布市| 伊金霍洛旗| 柯坪县| 来宾市| 新绛县| 自治县| 南靖县| 黑水县| 柳林县| 安溪县| 会同县| 桑植县| 黔江区| 富源县| 西宁市| 兴仁县|