Java 如何读取文件
在电脑上用记事本打开一个文档、用浏览器读取本地的网页文件,本质上都是“读取文件”的操作。咱们每天用的软件,背后也藏着各种文件读取的逻辑——比如你打开一个手机APP的本地缓存、查看软件的日志,这些都离不开“程序怎么读取文件”的底层逻辑。而Java作为目前应用最广的编程语言之一,它的文件读取功能简单实用,普通人也能快速上手,今天就用几个生活化的例子,把这个问题说清楚。
最基础的:逐行读“聊天记录”——用BufferedReader
想象你手里有一本打印好的好友聊天记录,每页一行,你要一行一行抄到本子上,抄的时候不用每次都把整页纸拿起来,只要盯着当前的那一行慢慢看就行。Java里的BufferedReader就像你手里的这支笔,专门用来“一行一行读文件”,适合读内容比较多、需要逐行处理的文件,比如聊天记录、配置说明。

举个实际的例子:电脑桌面有个叫“聊天记录.txt”的文件,内容是“今天吃什么?”“吃火锅!”,要把每一行都打印出来,代码写起来很简单,只要注意操作完要“收拾好东西”(关闭流,避免占内存),就像抄完笔记要把本子合上一样。
最省心的:一次性读“便签”——用Files.readAllLines
如果文件是一张小便签,比如只有一行“今天会议改到下午3点”,那没必要一行一行慢慢抄,直接把整张便签拿起来看就行,效率更高。Java的Files.readAllLines就像直接拿便签,适合读内容少、一次性就能处理完的文件,比如小的配置项、临时记录。
还是用刚才的例子,“聊天记录.txt”只有两行,用这个方法可以直接把所有行读成一个“列表”(就像把两行文字放进一个小盒子里),之后想拿哪一行都能直接取,不用逐行找,特别省心。
最灵活的:字节级读“快递包裹”——用FileInputStream
有时候文件不是文字,而是图片、视频、压缩包这类“二进制内容”,就像快递包裹,里面的东西是按字节拆分的小单元,要拆开看就得一个字节一个字节来。FileInputStream就像拆快递的剪刀,适合读非文字类的文件,或者需要精确控制读取位置的场景,比如复制图片。
比如你要把桌面的“风景.jpg”复制到另一个文件夹,就得用这个方法,一个字节一个字节读原文件,再一个字节一个字节写到新文件里,就像拆完快递里的每一样东西,再原封不动打包成新包裹,不会弄丢任何细节。
新手要注意的小细节
很多新手第一次写Java读取文件的代码,容易犯一个错:打开了文件却忘了关闭,就像抄完聊天记录把本子扔在桌上,下次想拿的时候找不到,还占了桌子空间。所以不管用哪种方法,读完文件都要记得关闭资源,现在新版本的Java还能自动关资源,就像抄完笔记自动把本子合上,不用手动操作,特别方便。
另外,文件的路径也很重要,就像你找聊天记录不能说“找我桌上的东西”,得说“找我电脑桌面上的‘聊天记录.txt’”,写代码的时候要把文件的准确位置写对,不然就会“找不到文件”,读不出来内容。
其实Java读取文件的核心逻辑,就是根据文件的类型和大小,选适合的“读取工具”——小的便签一次性拿,长的聊天记录慢慢抄,二进制的快递一个个拆,选对工具就能轻松搞定,不用记复杂的术语,多试几次就能熟练。