java快速讀取大檔案

來源:互聯網
上載者:User

標籤:

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快速讀取大檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.