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行数据,那么会不会导致内存溢出?
如果是将如何解决?请高手不吝赐教,分不多了,谢谢! 展开
File file = new File(".", "123.txt);
BufferedReader bw = new BufferedReader(new FileReader(file));
//后面只执行一次bw.readLine();
bw.readLine();
读取文件时,如果123.txt过大,例如10个G,但只读1行数据,那么会不会导致内存溢出?
如果是将如何解决?请高手不吝赐教,分不多了,谢谢! 展开
展开全部
不会,它不是一次性把文件加载到内存的,只是字符流的封装,大概的意思就是一个字符一个字符的找,直到有换行或者文件结尾
另外你考虑的太多了,这些东西作为程序的开发者早就考虑到了
另外你考虑的太多了,这些东西作为程序的开发者早就考虑到了
更多追问追答
追问
我的数据时一行一行的,每行大概不到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) {
//其他操作
}
唯一的解决方式不要用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个字符.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
几MBtxt文件电脑打开都很慢,你还10GB不可能的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询