java 快速读文件_java快速读取文件
如何優雅讀取文件,java想簡單讀寫一個文件都要上10行代碼。幸好guava和apache commons 都有提供簡單操作文件工具。
簡單介紹讀取文件最后一行、讀取文件第一行、讀取大文件、往大文件追加內容、按行讀取等
下面部分使用apache commons io為例:
可能你需要導入:
commons-io-2.4.jar
guava-23.5-jre.jar
小文件 - 寫入文件File?file?=?new?File("C:/Users/john/Desktop/111.txt");
FileUtils.write(file,?"你好!\r\n很高興認識你!",?"UTF-8");
小文件 - 讀取文件
按行讀取,一次性所有行(文件或行大于虛擬機的內存,內存溢出)File?file?=?new?File("C:/Users/john/Desktop/111.txt");
List?lines?=?FileUtils.readLines(file,?"UTF-8");
System.out.println(lines);
按文件讀取 - 一次性讀取文件所有內容(文件大于虛擬機的內存,內存溢出)File?file?=?new?File("C:/Users/john/Desktop/111.txt");
String?content?=?FileUtils.readFileToString(file,?"UTF-8");
System.out.println(content);
大文件或小文件 - 追加內容
往文件追加內容 - 尾部追加File?file?=?new?File("C:/Users/john/Desktop/111.txt");
FileUtils.write(file,?"我也很高興認識你!",?"UTF-8",?true);
大文件或小文件 - 讀取文件
當文件很大上了G級等,如果把文件全部讀取到內存中,分分鐘內容溢出,報 java.lang.OutOfMemoryError 錯。
commons io 提供了?LineIterator 來解決這個問題。
讀取文件 - 行讀取(行大于虛擬機的內存,內存溢出)File?file?=?new?File("C:/Users/john/Desktop/111.txt");
LineIterator?lineIterator?=?null;
try?{
lineIterator?=?FileUtils.lineIterator(file);
while?(lineIterator.hasNext())?{
String?line?=?lineIterator.nextLine();
System.out.println(line);
}
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
LineIterator.closeQuietly(lineIterator);
}
讀取文件 - ?讀取第一行(行大于虛擬機的內存,內存溢出)File?file?=?new?File("C:/Users/john/Desktop/111.txt");
LineIterator?lineIterator?=?null;
try?{
lineIterator?=?FileUtils.lineIterator(file);
if(lineIterator.hasNext()){
String?line?=?lineIterator.nextLine();
System.out.println(line);
}
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
LineIterator.closeQuietly(lineIterator);
}
讀取文件 - 讀取最后一行(行大于虛擬機的內存,內存溢出)File?file?=?new?File("C:/Users/john/Desktop/111.txt");
RandomAccessFile?raf?=?null;
try?{
raf?=?new?RandomAccessFile(file,?"r");
long?len?=?raf.length();
long?pos?=?len?-?1;
while?(pos?>?0)?{
pos--;
raf.seek(pos);
if?(raf.readByte()?==?'\n')?{
String?row?=?new?String(raf.readLine().getBytes("ISO-8859-1"),?"UTF-8");
System.out.println(row);
break;
}
}
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
if?(raf?!=?null)?{
try?{
raf.close();
}?catch?(Exception?e2)?{
}
}
}
相關包:
commons-io
commons-io
2.4
com.google.guava
guava
23.5-jre
原創文章,轉載請注明出處:https://www.weizhixi.com/article/81.html
總結
以上是生活随笔為你收集整理的java 快速读文件_java快速读取文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机论文哪儿找,查找关于计算机毕业论文
- 下一篇: sql中“delete from 表名”