java 关于异常和FileInputStream的问题

importjava.io.*;publicclassqqq{publicstaticvoidmain(Stringarg[]){intb;bytebuffer[]=ne... import java.io.*;

public class qqq{

public static void main(String arg[]){

int b;
byte buffer[]=new byte[2500];
try{
FileInputStream readfile=new FileInputStream("test.txt");
b=readfile.read(buffer,0,2500);

try{
String str=new String(buffer,0,b,"Default");
System.out.println();
}
catch(UnsupportedEncodingException ee){}
}
catch(IOException e){}
}

}

1。为什么这里try里需要嵌套一个try,我直接一个try下来,再catch不行么?这样做的作用是什么?

2。UnsupportedEncodingException 这个是什么异常,是由哪个语句引发的?

3。String str=new String(buffer,0,b,"Default");这里这个b我用2500可以么?有什么不同?

4。同样都是读,我用

int ch=0;
while((ch=readfile.read())!=-1){
System.out.print((char)ch);
}
这种方式可以么?
展开
 我来答
冰蓝凝海
2010-12-12 · 超过16用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:41.1万
展开全部
1.针对的异常不同,catch不同的Exception,可以做详细的异常处理,当然也可以一起逮,但是针对性不强,要看具体的需求,这个的作用你在每个异常里print一下然后专门触发那个异常就知道了

2.当然要触发那个异常,得先了解那个异常,我们做异常处理往往都是先有异常或能想到的异常再处理,你这里就有点逆向了,遇到这样的问题最好是查API或者相关文档,或者直接网上找一下

public class UnsupportedEncodingException extends IOException

不支持字符编码异常,也就是字符转码的问题,可能是因为缺失包,也可能是文件编码的设置问题不兼容导致,看String str=new String(buffer,0,b,"Default");
查String 的构造方法

String(byte[] bytes, int offset, int length, Charset charset)
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String

所以你指定的charset ("Default")有可能不存在而引发的异常

3.这个区别是有的,具体我没有运行你的文件,按我的理解b这个数应该指向文件的字符个数,也就是说文件有100个字符,b就等于100了,如果写2500的话后面2400个空间就多余了
捷易虚拟充值
2010-12-12
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
说什么好勒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式