一道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
考核知识点
和文件操作有关的类的构造函数
请阐释一下为什么选这两个答案,谢谢。 展开
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
考核知识点
和文件操作有关的类的构造函数
请阐释一下为什么选这两个答案,谢谢。 展开
6个回答
展开全部
对于写文件的操作,如果文件不存在,则会自动创建。
如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
如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
展开全部
这最简单的原因就是,ac两个是输入流(或间接使用了输入流),也就是说,他们要从文件中读取内容,如果文件不存在,就会抛出FileNotFoundException。
但是bd两个是输出流(或者说是间接使用输出流),就是往文件里面写东西的。如果文件不存在,就会创建,不会有异常产生。
但是bd两个是输出流(或者说是间接使用输出流),就是往文件里面写东西的。如果文件不存在,就会创建,不会有异常产生。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个看下源码就知道了:
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的构造方法,只检查给定的路径的读写权限,严格意义上它也是会出错的,当没有权限操作时它也会出错的,默认情况下对当前目录操作是具有权限的。
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,这里面就是源码。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ac是把文件abc.txt的内容读入内存,既然没有这个文件当然会抛出异常,bd是把内存中的内容写入到abc.txt中,如果文件不存在就创建了。你看看帮组文档就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bd是向外输出的,当没有发现同名称的文件时,则自动创建一个,所以不会出错,但输入流不行了,必需要有这个文件才能进行输入,不然就会报异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询