BufferedWriter writefile = null的目的是什么;

时间:2017-09-12 18:31:54

标签: java

我曾经使用过Buffered writer几次,但有一行代码我不确定它的用途。代码在

之下
BufferedWriter writefile = null;

我想知道是否有人能告诉我这行代码的作用以及是否需要。

1 个答案:

答案 0 :(得分:0)

BufferedReader的初始化可能涉及调用可能抛出new BufferedReader(new FileReader(fileLocation))之类的异常的构造函数,因为如果FileReader中的位置不是FileNotFoundException,则调用fileLocation构造函数可能会抛出try指向现有和可访问的文件。

要处理此异常,我们会在try{ BufferedReader br = new BufferedReader(new FileReader(fileLocation)); //... }catch(FileNotFoundException e){ //handle exception } 部分中移动初始化。从理论上讲,我们可以写

finally

但是在finally{ br.close(); } 部分,我们希望处理关闭该读取器并防止资源泄漏。所以我们需要添加

br

问题1 - 范围

我们无法从finally部分访问try,因为它已在try部分中声明,因此其范围仅限于此。

解决方案是在BufferedReader br; try{ br = new BufferedReader(new FileReader(fileLocation)); //... }catch(FileNotFoundException e){ //handle exception }finally{ br.close(); } 之外声明它,但在try中初始化。所以我们来做吧

br.close()

问题2 - 使用可能未初始化的变量

我们无法调用br,因为如果抛出异常null将不会被初始化(甚至没有null),因此编译器无法编译此类代码。

解决方法是明确br部分之前将try分配给finally。这样,我们就可以在br部分了解null是否已正确初始化并需要关闭(如果它仍然保留BufferedReader br = null; try{ br = new BufferedReader(new FileReader(fileLocation)); //... }catch(FileNotFoundException e){ //handle exception }finally{ if (br != null){ br.close(); } } )。所以我们习惯写代码如

try (BufferedReader br = new BufferedReader(new FileReader(fileLocation))) {
    //...
}catch(FileNotFoundException e){
    //handle exception
}
在引入 try-with-resources 之前,

Java 7 之前使用了上面的内容。现在我们需要具有与上面相同的功能

//my db.js

const mongoose = require('mongoose'), db;

db = mongoose.createConnection = ("mongodb://localhost:27017/myApp",
{ "auth": { "authSource": "admin" }, "user": "admin1234", "pass": "abcd" }); 

require('./profiles');

//profiles.js

const mongoose = require('mongoose');

const logFile = new mongoose.Schema ({});
//etc etc

mongoose.model('Profile', profileSchema);

// routepages index.js

const express = require('express')';
const router = express.Router();
const ctrlProfiles('../controller/profiles');

router
//some routes 

module.exports = router;


//controllers profiles.js
const mongoose = require('db'),

const Prof = mongoose.model('Profile');

const profileCreate = function (req,res) {};

module.exports = {
profileCreate 
};