一道java基础理论题

在J2EE中,利用下列构造函数准备对文件abc.txt操作,但文件abc.txt在当前目录不存在,不会产生运行时错误的是()。a)BufferedReaderbreade... 在J2EE中,利用下列构造函数准备对文件abc.txt操作,但文件abc.txt在当前目录不存在,不会产生运行时错误的是()。a) BufferedReader breader=new BufferedReader(new FileReader("abc.txt"));
b) PrintWriter out = new PrintWriter(new FileWriter(“abc.txt”),true);
c)FileInputStream fin = new FileInputStream(“abc.txt”);
d) OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“abc.txt”));
参考答案bd
考核知识点
和文件操作有关的类的构造函数
请阐释一下为什么选这两个答案,谢谢。
展开
 我来答
zhengmin200809
2013-07-17 · TA获得超过181个赞
知道答主
回答量:68
采纳率:0%
帮助的人:88.2万
展开全部
对于写文件的操作,如果文件不存在,则会自动创建。
如PrintWriter out = new PrintWriter(new FileWriter(“abc.txt”),true);的解释:

public FileWriter(File file)
throws IOException

根据给定的 File 对象构造一个 FileWriter 对象。
抛出:
IOException -
如果指定文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它。
所以文件不存在,可以创建的情况下,是不会报错的。

如OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“abc.txt”));的解释:
public FileOutputStream(String name)
throws FileNotFoundException

创建一个向具有指定名称的文件中写入数据的输出文件流。创建一个新 FileDescriptor 对象来表示此文件连接。
抛出:
FileNotFoundException
- 如果文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它 。
所以文件不存在,可以创建的情况下,是不会报错的。

对于读文件的操作,如果文件不存在,则会报异常。
如BufferedReader breader=new BufferedReader(new FileReader("abc.txt"));的解释:
public FileReader(String fileName)
throws FileNotFoundException

在给定从中读取数据的文件名的情况下创建一个新 FileReader。
抛出:
FileNotFoundException
- 如果指定文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取。
所以文件不存在,是会报错的。

如FileInputStream fin = new FileInputStream(“abc.txt”);的解释:
public FileInputStream(String name)
throws FileNotFoundException

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。创建一个新 FileDescriptor 对象来表示此文件连接。
抛出:
FileNotFoundException - 如果该文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取。
所以文件不存在,是会报错的。

所以最后答案是bd
xjx1024
2013-07-17 · TA获得超过163个赞
知道答主
回答量:68
采纳率:0%
帮助的人:57.8万
展开全部
这最简单的原因就是,ac两个是输入流(或间接使用了输入流),也就是说,他们要从文件中读取内容,如果文件不存在,就会抛出FileNotFoundException。
但是bd两个是输出流(或者说是间接使用输出流),就是往文件里面写东西的。如果文件不存在,就会创建,不会有异常产生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友afe836d
2013-07-17 · TA获得超过635个赞
知道小有建树答主
回答量:367
采纳率:50%
帮助的人:304万
展开全部
这个看下源码就知道了:

a、BufferedReader是FileReader的包装类,FileReader是FileInputStream的包装类,FileReader在构造函数调用调用FileInputStream的构造函数,FileInputStream的构造函数中调用了open(name)的native方法来读文件,当文件不存在时,就会报FileNotFound的错。
b、PrintWriter是FileWriter的包装类,FileWriter是FileOutputStream的包装类,FileWriter调用FileOutputStream的构造方法,只检查给定的路径的读写权限,严格意义上它也是会出错的,当没有权限操作时它也会出错的,默认情况下对当前目录操作是具有权限的。

c、FileInputStream的构造函数中调用了open(name)的native方法来读文件,当文件不存在时,就会报FileNotFound的错。
d、FileOutputStream的构造方法,只检查给定的路径的读写权限,严格意义上它也是会出错的,当没有权限操作时它也会出错的,默认情况下对当前目录操作是具有权限的。
追问
源码是怎么看的。
追答
你安装完JDK后,在安装目录下面有src.zip,这里面就是源码。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengzhi143neng
2013-07-17 · TA获得超过454个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:189万
展开全部
ac是把文件abc.txt的内容读入内存,既然没有这个文件当然会抛出异常,bd是把内存中的内容写入到abc.txt中,如果文件不存在就创建了。你看看帮组文档就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
净净的土
2013-07-17 · TA获得超过100个赞
知道答主
回答量:125
采纳率:25%
帮助的人:22万
展开全部
bd是向外输出的,当没有发现同名称的文件时,则自动创建一个,所以不会出错,但输入流不行了,必需要有这个文件才能进行输入,不然就会报异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式