JAVA问题 FileReader FileWriter 为什么输出的数字 而且long类型的为什么写不进去

File fi=new File("F:\\javatest\\lesson3\\test1.txt");
if(!fi.exists())
{
fi.createNewFile();
}
FileWriter fw=new FileWriter(fi);
int c=1;
// long d=2l;
char e='e';
String f="hello";
fw.write(c);
// fw.write(d);
fw.write(e);
fw.write(f);
fw.close();
FileReader fr=new FileReader(fi);
while((fr.read())!=-1)
{
System.out.println(fr.read());
}
fr.close();

第一个问题:FileWriter 这个类 的write方法中是没有这个方法的。里面可以写int可以写char可以写String 但是,不能写long 如果,你想写,完全可以 以字符串的形式写进去。
第二个问题。输出的是数字,那是因为,你没有进行转换。因为char 和 int 是互通的。呵呵,强转了就ok了。

另外,如楼上说的那样,你那样进行读取的话,肯定会少一半的字符,因为,每调用一次fr.read(),那么,指针就会往后移动一位。而在你的程序里面,每移动两次指针,才读一个字符。所以,就会漏掉。

源代码我帮你调试了一下。你的问题解决了。

呵呵,java的道路还很长啊,加油哦~~

package file;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test {
public static void main(String[]args) throws IOException{
File fi=new File("1.txt");//我这里用的是相对路径
if(!fi.exists())
{
fi.createNewFile();
}
FileWriter fw=new FileWriter(fi);
int c=1;
// long d=2l;//在FileWriter里面不支持这种写法,如果,你真的想写的话,就按字符串写进去吧。比如
Long d = 2l;
char e='e';
String f="hello";
fw.write(c);
fw.write(d.toString());
fw.write(e);
fw.write(f);
fw.close();
FileReader fr=new FileReader(fi);
int i = -1;
while((i = fr.read())!=-1)
{
System.out.print((char)i);
}
fr.close();
}
}

参考资料:手打

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-26
你怎么知道写不进去?因为你没有读出来吗???
看看你这一段代码:
while((fr.read())!=-1)
{
System.out.println(fr.read());
}
你是跳这输出的啊!循环条件里边已经往后读一个了,然后打印输出的时候你又读一位,当然有错了。

改成这样试试:
int r = 0;
while((r = fr.read())!=-1)
{
System.out.println(r);
}
相似回答