黑马程序员技术交流社区
标题:
在IO中的问题
[打印本页]
作者:
qq563426478
时间:
2015-3-3 14:50
标题:
在IO中的问题
package com.houde;
import java.io.*;
public class DemoIO01 {
public static void main(String[] args) {
FileWriter fw=null;
FileReader fr=null;
// TODO Auto-generated method stub
try {
fw=new FileWriter("c://a.txt");
fw.write("abcedfghijklmnopqrstuvwxyz");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(fw!=null)
try {
fw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
}
try {
fr=new FileReader("c:\\a.txt");
//fr.read();
int ch=0;
while((ch=fr.read())!=-1){
System.out.print((char)fr.read());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(fw!=null)
fw.close();
if(fr!=null)
fr.close();
} catch (IOException e2) {
// TODO: handle exception
System.out.println(e2.toString());
}
}
}
}
输出的是:befhjlnprtvxz
为什么输出的不是:abcedfghijklmnopqrstuvwxyz
作者:
菜鸟一号
时间:
2015-3-3 14:59
System.out.print((char)fr.read());因为这句
作者:
菜鸟一号
时间:
2015-3-3 15:00
System.out.print((char)fr.read());因为这句 你改成System.out.print((char)ch); 就好了
作者:
alvis2015
时间:
2015-3-3 15:03
import java.io.*;
public class TestIO {
public static void main(String[] args) {
FileWriter fw = null;
FileReader fr = null;
// TODO Auto-generated method stub
try {
fw = new FileWriter("c://a.txt");
fw.write("adfagagaggadgadag");
fw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fw != null)
try {
fw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
;
}
try {
fr = new FileReader("c:\\a.txt");
// fr.read();
int ch = 0;
while ((ch = fr.read()) != -1) {
//System.out.println((char)fr.read());//你跳过了很多字符,这里不能再read了
System.out.print((char) ch);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (fw != null)
fw.close();
if (fr != null)
fr.close();
} catch (IOException e2) {
// TODO: handle exception
System.out.println(e2.toString());
}
}
}
}
复制代码
你跳过了很多字符
作者:
qq563426478
时间:
2015-3-3 15:08
好的 受教了 谢谢 那里为什么不能用read呢 ???
作者:
alvis2015
时间:
2015-3-3 15:17
qq563426478 发表于 2015-3-3 15:08
好的 受教了 谢谢 那里为什么不能用read呢 ???
因为你如果再read一次,上一次read的字符还没被处理就被跳过去了,你得读一个处理一个(即打印一个)
作者:
文浩
时间:
2015-3-4 15:31
qq563426478 发表于 2015-3-3 15:08
好的 受教了 谢谢 那里为什么不能用read呢 ???
while ((ch = fr.read()) != -1) {
//System.out.println((char)fr.read());//你跳过了很多字符,这里不能再read了
System.out.print((char) ch);
你while里面寄已经用read方法读了一个字符,后面还read一次 是不是就跳过了
作者:
ko889910
时间:
2015-3-4 21:09
每执行一次read()方法,都会返回一个int类型并且指针会指向下一个int,你每次输出前还用read()进行了一次判断也就是说每次都让指针移动两次才输出一次
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2