码迷,mamicode.com
首页 > 编程语言 > 详细

java快速读取大文件

时间:2015-07-02 14:00:58      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

private String FileSeparator = File.separator; //区别不同window平台目录分隔符
private String FilePath = "E:"+FileSeparator+"Code"+FileSeparator+"pdm-server-parent"+FileSeparator+"pdm-server"+FileSeparator+"logs";
private final int BUFFER_SIZE = 0x300000;// 缓冲区大小为3M

public String getLogAllContent(String filename) throws IOException {
String FlagString = "";
/*FileReader reader = new FileReader(FilePath+FileSeparator+filename);
BufferedReader breader = new BufferedReader(reader);
while((breader.readLine())!=null){
FlagString += breader.readLine() + "\n";
}*/
File file = new File(FilePath+FileSeparator+filename);
MappedByteBuffer inputBuffer = new RandomAccessFile(file, "r")
.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length()); //读取全部内容
byte[] logByte = new byte[BUFFER_SIZE];//每次读取3M

for (int offset = 0; offset < inputBuffer.capacity(); offset += BUFFER_SIZE) {
if(inputBuffer.capacity() - offset >= BUFFER_SIZE){
for(int i = 0; i < BUFFER_SIZE; i++)
logByte[i] = inputBuffer.get(offset + i);
}else{
for (int i = 0; i < inputBuffer.capacity() - offset; i++)
logByte[i] = inputBuffer.get(offset + i);
}

int length = (inputBuffer.capacity() % BUFFER_SIZE == 0) ? BUFFER_SIZE
:inputBuffer.capacity() % BUFFER_SIZE;
FlagString = new String(logByte, 0, length);
}
return FlagString;
}

java快速读取大文件

标签:

原文地址:http://www.cnblogs.com/ilvy527-cody/p/4615707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!