① java程序能否强制关闭某文件的流
只有知道文件句柄才能关闭,所以你必须把打开的文件流都记在某个数组里,然后循环关闭即可
② java中IO流操作怎样关闭流
如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中 如果你先声明变量
InputStream(或者其他流类型) in = null;
然后执行其他语句,再 in = new 、、、、
在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception
另外你的代码按如下写会更合理:
if(null != in){
try{
in.flush();
in.close();
in = null;
}
catch(IOExection e){};
}
③ java;怎么关闭流文件
最好声明在一个特定的作用域里面,这样作用域一到自己就释放掉了,也就不存在什么你来关闭了,因为很多内置类析构函数都是有很完整的系统垃圾回收机制。不要做重复的事,当然如果你需要关闭之后在打开,你可以使用手动关闭。
④ Java:这里的两个流都需要关闭吗
ois.close();这个一定要,每次构造ObjectInputStream都先回向流中读那4个标志字节,你只new 了一次ObjectInputStream,所以只向流中读一次那4个字节,所以读完第一个对象后,流中接下来的4个字节是标志字节,不是对象的序列化信息,所以用再用readObject()会出现StreamCorruptedException异常。
is.close();也要,文件流一直打开着。
哦你说关闭ois的时候会将is也一同关闭吗?不会的,刚好理解反了。
先有了文件流,打开了文件,然后在这个基础上输入输出流,你光把输入输出关了,文件流又没变,只不过就是你开着文件不去读写罢了,流还是在的。都要关闭的。
⑤ java io流对文件的增删改查
可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到的内容,之后通过if判断来实现在某些特定位置的查找、增加、删除、修改操作。
举例:
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
if(str.indexOf("排除")<0){//判断是否需要舍弃
pw.write(str);//将要写入文件的内容,可以多次write
}
}
bre.close();//关闭流
pw.close();//关闭流
解释:以上方法是实现的删除,if中的条件改变下,即可实现其余的功能。
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
⑥ java 文件流 文件操作疑惑 为什么运行程序后h:\\3.txt为0kb 就是为什么没有写入文件
在关闭流之前,要加入os.flush()方法,如下代码。原因是,FileWriter是缓冲字符流,对尘弯于缓冲流迟信,是这样执行的。当缓冲区满了,就写一次,还有就码兄轮是在调用flush方法写一次,所以你在关闭的时候,如果缓冲区没满,是没写的,你不flush,那最终关闭了也没有数据写进文件。确保所有数据都写入了的办法就是在关闭流之前调用一次flush方法。
try {
os.flush();
os.close();
} catch (Exception e) {
System.out.println(e);
}
⑦ 关于java中io流的关闭问题,部分代码,这种情况用不用关闭new FileReader(file)
是的,你的new FileReader(file)是一个匿名对象。
JVM中对于那些打开了没有关闭的IO文件流,会在不再被使用的情况下,等到下次做Full GC的时候把他们全部回收,尽量少使用这种写法。文章来自:http://blog.csdn.net/kongxx/article/details/6405914
⑧ 为什么在java中打开流后一定要关闭流好像关不关没有不同,程序的结果都是一样的。。。
这跟资源的占用有关
比如你将一个100MB的word文档转换成流,然后进行分析存储到数据库一样
它是将这100MB的东西读到内存,然后进行处理,如果你在使用的时候不关闭
那么java就认为你是一直在使用
而不进行垃圾回收
那么就占你100MB的内存
这样有可能导致内存溢出
⑨ JAVA中文件流和字符流操作完成后,如不关闭,会出现什么情况
字符流不关闭是没关系的 垃圾收集到最后会自动为你回收
只不过要多占用内存一会而已
但如果文件流布关闭(尤其是独占模式下)
则会出现异常 对外的程序也打不开这个文件
因此要记得关闭它