java 关于txt文件读取的问题

使用Filefile=newFile(".","123.txt);BufferedReaderbw=newBufferedReader(newFileReader(fil... 使用
File file = new File(".", "123.txt);
BufferedReader bw = new BufferedReader(new FileReader(file));
//后面只执行一次bw.readLine();
bw.readLine();

读取文件时,如果123.txt过大,例如10个G,但只读1行数据,那么会不会导致内存溢出?

如果是将如何解决?请高手不吝赐教,分不多了,谢谢!
展开
 我来答
zgh26782000
2013-05-14 · TA获得超过1453个赞
知道小有建树答主
回答量:788
采纳率:0%
帮助的人:501万
展开全部
不会,它不是一次性把文件加载到内存的,只是字符流的封装,大概的意思就是一个字符一个字符的找,直到有换行或者文件结尾
另外你考虑的太多了,这些东西作为程序的开发者早就考虑到了
更多追问追答
追问
我的数据时一行一行的,每行大概不到100个字符,行数很多,几百万行,那么我能不能每次按指定行去读?比如只读第10到20行的数据。
追答
BufferedReader 只能一行一行的过,没有太好的方法读指定行
RandomAccessFile 可以跳过部分字符,但是没有跳过几行的方法
匿名用户
2013-05-14
展开全部
如果是10个G的文件就一行,内存溢出是必然的;
唯一的解决方式不要用BufferedReader;
直接分段读()
如下:
FileInputStream input = new FileInputStream(xxxxx);
byte[] temp = new byte[2048];//2k读一次,可以定义大一点
int tp = 0;
while((tp = input.read(temp)) != -1) {
//其他操作
}
追问
不是的,我的TXT文件大概有几百万行,但是我用bw.readLine();只读第一行会不会内存溢出?如果用byte[] temp = new byte[2048]的方法不能准确的一行行的读,因为每行的长度不同,不过都不超过100个字符.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x80x86cj
2013-05-14 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:123
采纳率:100%
帮助的人:94.4万
展开全部
几MBtxt文件电脑打开都很慢,你还10GB不可能的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式