当前位置: 代码迷 >> Java相关 >> [求助]问个关于文件输入输出流的问题
  详细解决方案

[求助]问个关于文件输入输出流的问题

热度:112   发布时间:2006-08-31 23:56:07.0
[求助]问个关于文件输入输出流的问题

import java.io.*;

public class FileInputStreamDemo{
public static void main(String args[]){
try{
FileInputStreamDemo fd=new FileInputStreamDemo();
String fileName=fd.getClass().getResource("FileInputStreamDemo.java").getFile();
FileInputStream in=new FileInputStream(fileName);

//BufferedReader br=new BufferedReader(new InputStreamReader(in));
while(in.available()>0){
System.out.print((char)in.read());
}
//System.out.println(br.toString());
in.close();

}catch(Exception e){
e.toString();
}

}
}
这个程序的结果就是把文件内容输出在显示终端上,但是我想用这两句注释的语句来代替while循环语句,但结果却不一样。结果是:java.io.BufferedReader@765291.为什么?有高人能帮我解答下吗?

[此贴子已经被作者于2006-8-31 23:57:07编辑过]

搜索更多相关的解决方案: 文件  new  java  输出  String  

----------------解决方案--------------------------------------------------------
是不是要写成br.close();
----------------解决方案--------------------------------------------------------

首先你得弄清楚直接输出对象名称代表的含义。我把程序改了一下,输出内容相同。

import java.io.*;

public class FileInputStreamDemo{
public static void main(String args[]){
try
{
FileInputStreamDemo fd=new FileInputStreamDemo();
String fileName=fd.getClass().getResource("FileInputStreamDemo.java").getFile();
FileInputStream in=new FileInputStream(fileName);
BufferedReader br=new BufferedReader(new InputStreamReader(in));
do
{
System.out.println(br.readLine());
}
while(br.read()!=-1);
}
catch(IOException e)
{
System.out.println(e.toString());
}

}
}

[此贴子已经被作者于2006-9-1 10:31:13编辑过]


----------------解决方案--------------------------------------------------------

若使用RandomAccessFile,程序将更简单。
import java.io.*;

public class FileInputStreamDemo{
public static void main(String args[]){
try{
FileInputStreamDemo fd=new FileInputStreamDemo();
String fileName=fd.getClass().getResource("FileInputStreamDemo.java").getFile();
RandomAccessFile raf=new RandomAccessFile(fileName,"r");
do
{
System.out.println(raf.readLine());
}
while(raf.read()!=-1);
}catch(IOException e){
System.out.println(e.toString());
}
}
}

[此贴子已经被作者于2006-9-1 10:48:58编辑过]


----------------解决方案--------------------------------------------------------

谢谢楼上的~我懂了~


----------------解决方案--------------------------------------------------------

BufferedReader中的toString方法是继承于Object的,并没有重写
以下摘自API
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

所有注释的那两句不行


----------------解决方案--------------------------------------------------------
3楼4楼的程序是不是应该把打开的流关闭啊!!

----------------解决方案--------------------------------------------------------
  相关解决方案