Java怎样读取txt文件的内容( 二 )

2.3两者的区别
RandomAccessFile可以通过移动文件指针改变读取的位置,可以按照几种基本类型直接读取数据,可以跳过一定的字节,整体来看,文件就像一个大的二进制数组。而DataInputStream就是单纯的输入流。
3. 大量数据的处理思路:
3.1 借助ByteBuffer使用堆外内存,在不导致oom的情况且内存充足的情况下可以大量申请内存。
3.2 借助RandomAccessFile分块读取,记录读取的最后位置,处理完毕后继续读。或者多线程处理,拆分整个文件为多个大小相等的块,分入多个子线程进入线程池并发处理。
3.3 用BufferedReader和正则,匹配到特征数据后暂停,然后处理数据,然后继续读取。

■网友
如果要懂原理的话,需要深入到操作系统的文件系统部分,从拿到文件句柄开始。java读文件代码很多,百度一下吧
■网友
1、实现目标读取文件,将文件中的数据一行行的取出。
2、代码实现方式1:
  通过BufferedReader的readLine()方法。
/*** 功能:Java读取txt文件的内容 步骤:*1:先获得文件句柄 *2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取*3:读取到输入流后,需要读取生成字节流 *4:一行一行的输出。readline()。 *备注:需要考虑的是异常情况* * @param filePath* 文件路径* @return 将这个文件按照每一行切割成数组存放到list中。*/ public static List\u0026lt;String\u0026gt; readTxtFileIntoStringArrList(String filePath) { List\u0026lt;String\u0026gt; list = new ArrayList\u0026lt;String\u0026gt;(); try { String encoding = "GBK"; File file = new File(filePath); if (file.isFile() \u0026amp;\u0026amp; file.exists()) { // 判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file), encoding);// 考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { list.add(lineTxt); } bufferedReader.close(); read.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return list; }方式2
通过文件byte数组暂存文件中内容,将其转换为String数据,再按照 “回车换行” 进行分割。
/** * 读取filePath的文件,将文件中的数据按照行读取到String数组中 * @param filePath 文件的路径 * @return 文件中一行一行的数据 */ public static String readToString(String filePath) { File file = new File(filePath); Long filelength = file.length(); // 获取文件长度 byte filecontent = new byte; try { FileInputStream in = new FileInputStream(file); in.read(filecontent); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String fileContentArr = new String(filecontent).split("\\r\"); return fileContentArr;// 返回文件内容,默认编码 }


推荐阅读