The NoteBook of EricKong

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  610 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks
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 阅读(735) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: