黑马程序员技术交流社区
标题:
JAVA文件流中Read()函数的问题
[打印本页]
作者:
范明正
时间:
2011-9-3 00:46
标题:
JAVA文件流中Read()函数的问题
import java.io.*;
public class TextFileReaderLine
{
String filename;
FileReader fw;
public TextFileReaderLine(String f)
{
filename = f;
try
{
fw = new FileReader(new File(f));
} catch (IOException e)
{
}
}
public void readLine()
{
char ch = '\u0000';
try
{
while (ch != -1)
{
ch = (char) fw.read();
System.out.print(ch);
}
} catch (IOException e)
{
System.out.print("Error!");
}
}
public static void main(String args[])
{
TextFileReaderLine frs = new TextFileReaderLine("text1.txt");
frs.readLine();
}
}
Exception in thread "main" java.lang.NullPointerException
at TextFileReaderLine.readLine(TextFileReaderLine.java:27)
at TextFileReaderLine.main(TextFileReaderLine.java:39)
就是Read()函数与ReadLine()函数的调用问题,其实质是未实例化的调用,但是怎么修改呢?还是因为其他的错误呢??O(∩_∩)O谢谢!
作者:
匿名
时间:
2011-9-3 08:46
while (ch != -1) =while(true)
你的这个这个程序我只是改了一下 text1.txt》》》d:\\text1.txt
改成我硬盘的绝对路径
运行没问题
只不过读完text1.txt,他还无限读了好多
显示??????????????????????
作者:
匿名
时间:
2011-9-3 09:06
你要先判断一下text1.txt这个文件存不存在,如果没有就要新创建一个
作者:
李治
时间:
2011-9-3 15:36
标题:
回复 楼主 的帖子
我修改了一下,你可以看一看
import java.io.*;
class TextFileReaderLine {
private FileReader fw;
// filename就没有用到,就删掉了。
public TextFileReaderLine(String f) {
try {
fw = new FileReader(new File(f));
} catch (IOException e) {
}
}
public void readLine() {
// 在这里不要改变返回值的类型,最好定义为int
int readChar = 0;
try {
while (readChar != -1) {
readChar = fw.read();
// 如果你将readChar定义为char,-1转为char就是空白,然后在转为int就是65535
// 就会一直执行,不停止,显示乱码。
if (readChar == -1) {
break;
}
// 打印的时候才转为char
System.out.print((char) readChar);
}
} catch (IOException e) {
System.out.print("Error!");
} finally {
// 重要的一点,用完之后,记得close你打开的文件,这是不容忽视的。
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String args[]) {
TextFileReaderLine frs = new TextFileReaderLine("d:\\1.txt");
frs.readLine();
}
}
现在就没什么问题了,关键的地方写了注释,应该可以看懂了,好好理解一下。
[
本帖最后由 李治 于 2011-09-03 18:44 编辑
]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2