当前位置:编程学习 > JAVA >>

关 IO流的疑问。。。。。。。。。大神请进~~

InputStream in = new FileInputStream(tempLogFile);
PrintWriter out= new PrintWriter(textLogFile);
/**
 * 每次从临时文件中读取一条数据 372字节
 */
byte[] log = new byte[LogData.LOG_LENGTH];

while(in.read(log) != -1){
/**
 * 读取372字节中的每个部分
 * 解析出日志中的相关信息
 * 并保存到一个LogData实例中
 */
LogData logData = parseLog(log);
out.println(logData);
}
我想问大神们,该段代码每次在做输入输出操作时,万一 电脑断电了,tempLogFile(事先建好了) 和 textLogFile(原先没创建)这两个文件将会是什么状态呢?(这里状态的意思是 这两个文件会被删除,还是自动创建,或者是在断电前一刻读写到哪里 就到哪里?) --------------------编程问答-------------------- 没有刷新?
很不幸,同志。

其实每次刷新就行了,刷了多少就能到目标文件里面多少。

--------------------编程问答-------------------- 你的PrintWriter不带自动行刷新,正常情况下会写缓冲区大小的整数倍(还没读完文件时)
但你都考虑到断电这种极端情况了,有可能正在刷新时停止,但不是"读写到哪里 就到哪里",是刷到哪里就到哪里 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 断电就是一瞬间电脑也预料不到的,所以什么删除什么的肯定都不会发生,而是维持断电前一瞬间的状态

tempLogFile对于这个文件来说,你只是读,所以没什么影响
textLogFile对于这个文件就看操作系统的写入进度了,写了多少就是多少,当然还有系统缓冲区的影响,不一定你写进去的东西就输出到磁盘了
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,