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
          主站蜘蛛池模板: 秦皇岛市| 车险| 平阴县| 托里县| 同德县| 合山市| 宁武县| 稻城县| 临城县| 吉安县| 获嘉县| 吐鲁番市| 苏尼特左旗| 潞西市| 铁岭县| 象山县| 额济纳旗| 安化县| 阳西县| 双江| 侯马市| 禄劝| 嘉兴市| SHOW| 泸州市| 横峰县| 侯马市| 松潘县| 乌拉特后旗| 区。| 当雄县| 龙江县| 平定县| 秦安县| 南漳县| 鄂温| 沂水县| 岚皋县| 正蓝旗| 高安市| 兴宁市|