问题描述
InputStreamin=newFileInputStream(tempLogFile);PrintWriterout=newPrintWriter(textLogFile);/***每次从临时文件中读取一条数据372字节*/byte[]log=newbyte[LogData.LOG_LENGTH];while(in.read(log)!=-1){/***读取372字节中的每个部分*解析出日志中的相关信息*并保存到一个LogData实例中*/LogDatalogData=parseLog(log);out.println(logData);}我想问大神们,该段代码每次在做输入输出操作时,万一电脑断电了,tempLogFile(事先建好了)和textLogFile(原先没创建)这两个文件将会是什么状态呢?(这里状态的意思是这两个文件会被删除,还是自动创建,或者是在断电前一刻读写到哪里就到哪里?)
解决方案
解决方案二:
没有刷新?很不幸,同志。其实每次刷新就行了,刷了多少就能到目标文件里面多少。
解决方案三:
你的PrintWriter不带自动行刷新,正常情况下会写缓冲区大小的整数倍(还没读完文件时)但你都考虑到断电这种极端情况了,有可能正在刷新时停止,但不是"读写到哪里就到哪里",是刷到哪里就到哪里
解决方案四:
解决方案五:
断电就是一瞬间电脑也预料不到的,所以什么删除什么的肯定都不会发生,而是维持断电前一瞬间的状态tempLogFile对于这个文件来说,你只是读,所以没什么影响textLogFile对于这个文件就看操作系统的写入进度了,写了多少就是多少,当然还有系统缓冲区的影响,不一定你写进去的东西就输出到磁盘了
时间: 2024-12-28 12:51:30