Java 如果重新实例化FileInputStream,是否应该多次关闭它
下面是代码。我只给close打了一次电话,这样做对吗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
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
)
如果这样做,则不需要拆卸代码。违抗性地关闭。违抗性地关闭。