java 快速读取大文件_java快速读取大文件

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;

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值