黑马程序员技术交流社区
标题:
io流的问题
[打印本页]
作者:
魏亮
时间:
2012-10-21 09:29
标题:
io流的问题
本帖最后由 魏亮 于 2012-10-23 10:46 编辑
import java.io.*;
class ObjectStream
{
public static void main(String[] args) throws Exception
{
writeUTF();
}
public static void writeUTF() throws Exception
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ObjectUTF.txt"));
oos.writeUTF("三防旅馆");
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("ObjectUTF.txt"));
String line = ois.readUTF();
System.out.println(line);
}
}
复制代码
编译没有错误,一执行就会报边的异常,我这个用wirteUFT()写,用readUTF读,应该没什么问题呀??问题出在哪,请指教
360截图-61771515.jpg
(25.98 KB, 下载次数: 66)
下载附件
2012-10-21 09:29 上传
作者:
刘伟平
时间:
2012-10-21 10:11
本帖最后由 刘伟平 于 2012-10-21 10:14 编辑
flush()
刷新该流的缓冲。
import java.io.*;
class Test
{
public static void main(String[] args) throws Exception
{
writeUTF();
}
public static void writeUTF() throws Exception
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ObjectUTF.txt"));
oos.writeUTF("三防旅馆");
oos.flush();//加上这一句!!!只有这样,上面的数据才会写入文件,否则留在流的缓冲中
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("ObjectUTF.txt"));
String line = ois.readUTF();
System.out.println(line);
}
}
复制代码
作者:
王自强
时间:
2012-10-21 10:22
import java.io.*;
class ObjectStream
{
public static void main(String[] args) throws Exception
{
writeUTF();
}
public static void writeUTF() throws Exception
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ObjectUTF.txt"));
oos.writeUTF("三防旅馆");
oos.close();//你的写入流没有关
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("ObjectUTF.txt"));
String line = ois.readUTF();//所以你的读取流就读取到了 另外一个流(上面写入流)的末尾,发生EOFException异常!
//正常情况下,写入流关闭后即oos.close(),你的读取流ois应该读取的是一个文件对象即ObjectUTF.txt,而不是一个流对象
System.out.println(line);
ois.close();
/*EOFException这个异常,就是读取到流的末尾的异常,以后碰见,看看自己的写入流关了没有!养成好习惯啊!
* */
}
}
复制代码
作者:
ssx0101
时间:
2012-10-21 11:45
要养成资源打开后一定要关闭的习惯
作者:
黑马杨锦喜
时间:
2012-10-21 15:16
Exception in thread "main" java.io.EOFException中,
EOFException指文件结尾了还继续读文件,就导致这个错误抛出。本来EOF的数值就是-1,但是是一种用于错误标识的记号。
因此
oos.writeUTF("三防旅馆");
oos.flush();//或者oos.close(); 刷新缓冲区或者关闭资源文件,则上面的数据才会写入文件,否则留在流的缓冲中
最后写入流之后也需加上
ois.close();
作者:
黑马杨锦喜
时间:
2012-10-21 15:17
Exception in thread "main" java.io.EOFException中,
EOFException指文件结尾了还继续读文件,就导致这个错误抛出。本来EOF的数值就是-1,但是是一种用于错误标识的记号。
因此
oos.writeUTF("三防旅馆");
oos.flush();//或者oos.close(); 刷新缓冲区或者关闭资源文件,则上面的数据才会写入文件,否则留在流的缓冲中
最后写入流之后也需加上
ois.close();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2