Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果重新实例化FileInputStream,是否应该多次关闭它_Java_File_Fileinputstream - Fatal编程技术网

Java 如果重新实例化FileInputStream,是否应该多次关闭它

Java 如果重新实例化FileInputStream,是否应该多次关闭它,java,file,fileinputstream,Java,File,Fileinputstream,下面是代码。我只给close打了一次电话,这样做对吗 public class SeatTest extends TestCase { FileInputStream inputStream; ArrayList<File> fileNames = new ArrayList<>(); @SuppressWarnings("unchecked") @Override protected void setUp() throws Ex

下面是代码。我只给close打了一次电话,这样做对吗

public class SeatTest extends TestCase {
    FileInputStream inputStream;
    ArrayList<File> fileNames = new ArrayList<>();

    @SuppressWarnings("unchecked")
    @Override
    protected void setUp() throws Exception {
        File dir = new File("./data/test/seat_layouts");
        fileNames = new ArrayList<File>(Arrays.asList(dir.listFiles()));
    }

    @Test
    public void testParse() throws IOException {
        for (File file : fileNames) {
            inputStream = new FileInputStream(file);
            String everyThing = IOUtils.toString(inputStream, "UTF-8");
            //do something
        }
    }

    @Override
    protected void tearDown() throws Exception {
        if (inputStream != null) {
            inputStream.close();
        }
    }


}
公共类SeatTest扩展了TestCase{
文件输入流输入流;
ArrayList文件名=新的ArrayList();
@抑制警告(“未选中”)
@凌驾
受保护的void setUp()引发异常{
文件目录=新文件(“./data/test/seat_布局”);
fileNames=newarraylist(Arrays.asList(dir.listFiles());
}
@试验
public void testParse()引发IOException{
用于(文件名:文件名){
inputStream=新文件inputStream(文件);
String everyThing=IOUtils.toString(inputStream,“UTF-8”);
//做点什么
}
}
@凌驾
受保护的void tearDown()引发异常{
如果(inputStream!=null){
inputStream.close();
}
}
}
如果重新实例化,是否应该多次关闭FileInputStream

是的。。。。有点

应关闭
FileInputStream
的每个实例,否则可能会泄漏文件描述符。每次“重新实例化”对象时,都会创建一个新实例,每个实例都应该关闭

比如说

@Test
public void testParse() throws IOException {
    for (File file : fileNames) {
        try (FileInputStream inputStream = new FileInputStream(file)) {
            String everyThing = IOUtils.toString(inputStream, "UTF-8");
            //do something
        }
    }
}
请注意,
try with resource
将自动关闭资源(即
inputStream

如果这样做,则不需要拆卸代码

如果重新实例化,是否应该多次关闭FileInputStream

是的。。。。有点

应关闭
FileInputStream
的每个实例,否则可能会泄漏文件描述符。每次“重新实例化”对象时,都会创建一个新实例,每个实例都应该关闭

比如说

@Test
public void testParse() throws IOException {
    for (File file : fileNames) {
        try (FileInputStream inputStream = new FileInputStream(file)) {
            String everyThing = IOUtils.toString(inputStream, "UTF-8");
            //do something
        }
    }
}
请注意,
try with resource
将自动关闭资源(即
inputStream


如果这样做,则不需要拆卸代码。

违抗性地关闭。违抗性地关闭。