我正在学习如何在java中读取文件。这种差异困扰着我。我认为有一些重要的区别,我不太清楚。
File inputFile = new File("input.txt");
// is perfect fine even if input.txt doesn't exist. Why?
// but
FileReader fr = new FileReader("input.txt");
// should be put into try.. catch block?? or compiler error
答案 0 :(得分:4)
因为new FileReader("file")
会抛出已检查的异常FileNotFoundException
,new File("file")
不会。{/ p>
请注意,new File
不检查文件是否确实存在,FileReader
在哪里。
答案 1 :(得分:1)
答案 2 :(得分:1)
技术原因是因为一个构造函数抛出非运行时异常而另一个不抛出。
至于为什么?也许是因为File类只是文件系统路径名的抽象。文件是否存在于该路径中并不重要。 FileReader封装了对实际文件系统对象的读取操作,如果该文件不存在或者无法打开以进行读取,则会引发异常。
答案 3 :(得分:0)
<div
ng-repeat="photo in controller.pendingPhotos"
class="mdl-card photo-frame mdl-card--border mdl-shadow--4dp">
<div class="mdl-card__title">
{{photo.file.name}}
</div>
<div class="img-placeholder mdl-card__media">
<div
ng-if="!photo.content"
class="mdl-spinner mdl-js-spinner is-active"
mdl-upgrade
></div>
<img class="img-preview" ng-if="photo.content" ng-src="{{photo.content}}"/>
</div>
<div class="mdl-card__supporting-text" ng-if="photo.response">
{{controller.formatResponse(photo.response)}}
</div>
</div>
尚未提交给实际文件。因此,您可以测试文件是否存在,或者打开文件以便稍后写入。虽然File("input.txt")
实际上尝试打开命名文件进行读取,因此可以抛出异常。