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

Filefi=newFile("F:\\javatest\\lesson3\\test1.txt");if(!fi.exists()){fi.createNewFile(... 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();
展开
 我来答
popantx5CgP
2010-10-26 · TA获得超过176个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:116万
展开全部
第一个问题: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();
}
}

参考资料: 手打

whatis1and1
2010-10-26 · TA获得超过236个赞
知道答主
回答量:81
采纳率:0%
帮助的人:0
展开全部
你怎么知道写不进去?因为你没有读出来吗???
看看你这一段代码:
while((fr.read())!=-1)
{
System.out.println(fr.read());
}
你是跳这输出的啊!循环条件里边已经往后读一个了,然后打印输出的时候你又读一位,当然有错了。

改成这样试试:
int r = 0;
while((r = fr.read())!=-1)
{
System.out.println(r);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式