java快速读取文件
阅读(1198)
2018-03-13
如何优雅读取文件,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<String> 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) { } } }
相关包:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.5-jre</version> </dependency>
原创文章,转载请注明出处:https://www.weizhixi.com/article/81.html