java的字符IO流中遇到问题,求高人指点!!!!
图示代码内容正常输入输出,但是有异常提示:求高人指点!!!!以下是文本代码:importjava.io.*;//导入IO类所在包classtestChar{publics...
图示代码
内容正常输入输出,但是有异常提示:求高人指点!!!!
以下是文本代码:
import java.io.*; //导入IO类所在包
class testChar{
public static void main(String args[]){
FileReader fr = null; //生成输入流子类的引用fr
FileWriter fw = null; //生成输出流子类的引用fw
try{
fr = new FileReader("f:/src/xiaoming.txt");//生成输入流对象并设置输入口
fw = new FileWriter("f:/src/xiaohong.txt");//生成输出流对象并设置输出口
char[] buffer = new char[100]; //生成字符数组,用以储存数据
while (true){ //进行循环
int temp = fr.read(buffer,0,buffer.length);//循环输入
if(temp == 0){ //判断条件,满足则跳出循环
break;
}
fw.write(buffer,0,temp); //输出内容
}
}
catch(Exception e){
System.out.println(e);
}
finally{
try{
fr.close(); //关闭输入口
fw.close(); //敢比输出口
}
catch(Exception w){
System.out.println(w);
}
}
}
} 展开
内容正常输入输出,但是有异常提示:求高人指点!!!!
以下是文本代码:
import java.io.*; //导入IO类所在包
class testChar{
public static void main(String args[]){
FileReader fr = null; //生成输入流子类的引用fr
FileWriter fw = null; //生成输出流子类的引用fw
try{
fr = new FileReader("f:/src/xiaoming.txt");//生成输入流对象并设置输入口
fw = new FileWriter("f:/src/xiaohong.txt");//生成输出流对象并设置输出口
char[] buffer = new char[100]; //生成字符数组,用以储存数据
while (true){ //进行循环
int temp = fr.read(buffer,0,buffer.length);//循环输入
if(temp == 0){ //判断条件,满足则跳出循环
break;
}
fw.write(buffer,0,temp); //输出内容
}
}
catch(Exception e){
System.out.println(e);
}
finally{
try{
fr.close(); //关闭输入口
fw.close(); //敢比输出口
}
catch(Exception w){
System.out.println(w);
}
}
}
} 展开
4个回答
展开全部
把循环读取和写入那段改成这样
// 进行循环
for (int temp; (temp = fr.read(buffer, 0, buffer.length)) != -1; ) {
fw.write(buffer, 0, temp); // 输出内容 /// 读到最后的时候temp等于-1
}
fw.close();
要注意当读取到末尾时fr.read(buffer, 0, buffer.length)返回值是-1,不是0。你之前的代码,当读到末尾时temp=-1,自然就索引越界了(IndexOutOfBoundsException)。
另外打印异常,最好用e.printStackTrace()替换System.out.println(e),前者可以提示你出现错误的位置
// 进行循环
for (int temp; (temp = fr.read(buffer, 0, buffer.length)) != -1; ) {
fw.write(buffer, 0, temp); // 输出内容 /// 读到最后的时候temp等于-1
}
fw.close();
要注意当读取到末尾时fr.read(buffer, 0, buffer.length)返回值是-1,不是0。你之前的代码,当读到末尾时temp=-1,自然就索引越界了(IndexOutOfBoundsException)。
另外打印异常,最好用e.printStackTrace()替换System.out.println(e),前者可以提示你出现错误的位置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议问问题时把异常全部贴出来, 很少会有人耐心的把你的代码看完,然后找出你代码中的bug, 尤其是每个人都有自己的一大摊子破事要做.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把if(temp==0)改为if(temp==-1)试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询