黑马程序员技术交流社区
标题:
io问题
[打印本页]
作者:
邱成
时间:
2012-9-28 23:09
标题:
io问题
import java.io.*;
class Test3
{
public static void main(String[] args)
{
try
{
File file=new File(args[0]);
if (!file.exists())
{
System.out.println("该文件不存在");
}
else
{
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String s=br.readLine();
while (br.readLine()!=null)
{
System.out.println(br.readLine());
s=br.readLine();
}
br.close();
fr.close();
}
}
catch(Exception e)
{
}
}
}
为什么这段代码读短的文件没有问题,读长的文件不会把全部文件内容读完??谢谢
作者:
王玉岩
时间:
2012-9-28 23:16
try
{
File file=new File(args[0]);
//我觉得是这块的问题,如果文件过大的话可能装不下
if (!file.exists())
{
System.out.println("该文件不存在");
}
else
{
FileReader fr=new FileReader(file);
作者:
郑世光
时间:
2012-9-28 23:48
本帖最后由 郑世光 于 2012-9-29 08:03 编辑
不同意楼上说法,此程序本来有问题。、
楼主是没理解readLine() 方法,每次调用函数就读取一行,返回此行的字符串,再次调用时就读取下一行了
修改如下:
import java.io.*;
public class Test3 {
public static void main(String[] args) {
try {
File file = new File("G:\\聊天程序.txt"); //我电脑上的文件,请修改,此处只是封装一个File对象,与文件大小无关,只要是纯文本就行
if (!file.exists()) {
System.out.println("该文件不存在");
} else {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s= null ;
while ((s=br.readLine()) != null) {
System.out.println(s);
//s = br.readLine();
}
br.close();
fr.close();
}
} catch (Exception e) {
}
}
}
作者:
张飞年
时间:
2012-9-29 00:11
楼主程序有问题啊,应该要注意到readLine()也是一个阻塞式的方法,不是一般的方法。它读一行,操作一行,再回来读一行再操作一行。。。
程序应该为
。。。
BufferedReader br=new BufferedReader(fr);
String line = null; // String s=br.readLine();
while( (line =br.readLine())!=null) //这里读一行,写一行,再上去读取一行,再写一行。。。
{ //阻塞式方法就是一直在那执行别的不让过,直到它执行完
System.out.println(line); //System.out.println(br.readLine());如果有很多个readLine()只有这里读取的才会输出
// s=br.readLine();
}
br.close();
fr.close();
。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2