黑马程序员技术交流社区

标题: 为什么这个输入流读出来的总是-1? [打印本页]

作者: zsq8210366    时间: 2016-11-24 12:28
标题: 为什么这个输入流读出来的总是-1?
代码如下
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException{
                FileInputStream fis  = new FileInputStream("c.txt");
                FileOutputStream fos = new FileOutputStream("c.txt");
                int b = fis.read();
                System.out.println(b);
fis.close();
fos.close();


这是写程序做一个测试,所以输出流还没有用  c.txt里存放的是100,正常应该是读出1的Ascii码是49啊?
但是如果把输出流去掉,代码写成这样
[AppleScript] 纯文本查看 复制代码
public static void main(String[] args) throws IOException{
                FileInputStream fis  = new FileInputStream("c.txt");
int b = fis.read();
System.out.println(b);
fis.close();

读出来的就是49了,请问这是为什么啊??虽然我创建了输出流,但是我并没有用它啊

作者: anTG    时间: 2016-11-24 13:28
FileOutputStream在创建对象的时候是如果没有这个文件会帮我们创建出来,如果有这个文件就会先将文件清空,所以你可以试一下把这个输出流对象放在read方法后面他就可以读出49,但是你下次读的时候就又是-1了,以为上一次已经把文件清空了

作者: zsq8210366    时间: 2016-11-24 15:33
anTG 发表于 2016-11-24 13:28
FileOutputStream在创建对象的时候是如果没有这个文件会帮我们创建出来,如果有这个文件就会先将文件清空, ...

我看了一下 确实,谢谢讲解
作者: chenyanwei6    时间: 2016-11-24 23:28
上面说的挺对的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2