我有一些代码,正在尝试从一个可能或可能没有加密的文件读取。如果它是加密的,那么它在实际数据之前有一个包含几个字节信息的头。访问该文件的逻辑如下所示:
bool encrypted = IsEncryptedFile(fileName);
Stream s = null;
if (encrypted)
{
s = new EncryptedStreamReader(fileName);
}
else
{
s = new StreamReader(fileName);
}
// Read from s
我的问题是:
我的假设是否正确,即关闭文件然后立即打开文件的代码可能会收到此错误,因为Windows仍在释放它,即使.NET Stream.Close方法调用已返回(或using块已退出)?
有没有比延长重试间隔更不垃圾的方法呢?
private bool IsEncryptedFile(string fileName)
{
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
//Read header from fileStream
//Returns true if encrypted else false
}
}
确保使用using和try finally子句处理流是正确的。
此外,还可以使用FileStream设置文件访问选项。
例:
bool encrypted = IsEncryptedFile(fileName);
Stream s = null;
try
{
if (encrypted)
{
s = new EncryptedStreamReader(fileName);
}
else
{
s = new FileStream(fileName, FileMode.Open, FileAccess.Read);
}
// Read from s
}
finally
{
if (s != null)
s.Close();
}
我有一个windows服务,它可以动态地将PDF合并在一起,然后将它们移动到另一个位置。在大多数情况下,我无法控制某人想要合并什么。有时会处理损坏的PDF,因此创建新的PdfDocument会抛出PDFEException“Traile not found”。我捕获了异常并关闭了文档,但在关闭PDF之后,它仍然以某种方式被锁定。我需要删除该目录,但在尝试这样做时,它会引发IOException并使
想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我想进行联调。我目前的方法: 我放置了@AutoConfigreMockMvc,但MockMvc对象仍然为空
我在Jpa存储库中使用Spring Boot。我在循环中保存一些记录,在保存所有记录后,会打印下面的异常。 JAVAsql。SQLRecoverableException:oracle的Instruço Fechada。jdbc。驾驶员OracleClosedStatement。oracle上的getMaxRows(OracleClosedStatement.java:3578)~[ojdbc6-
问题内容: 我是python的新手,到目前为止,我爱ipython笔记本进行学习。我是否使用to_csv()函数将pandas数据帧写出到文件中。我想打开csv来查看它在excel中的外观,并且只能以只读模式打开,因为它仍在被另一个用户使用。如何关闭文件? 这将写出文件没有问题,但是当我在excel中“检查”它时,我得到了只读警告。这也给我提出了一个更大的问题。有没有办法查看python当前正在使
每次我在模拟器中运行我的应用程序时,都会打开控制台的调试区。我不是很喜欢它,因为它是唯一的垃圾邮件。我想看到这一点,如果错误,或者如果我自己打开它。我检查了Xcode的偏好设置,并尝试在谷歌上搜索,但什么也没找到。
问题内容: 假设我有一个Java8 ,并且使用了该流,那么如何控制流中使用的s 的关闭? 请注意,我可能无权访问个人,例如: 在进行了其他一些映射等之后,我终于在续集中失去了。 我首先认为垃圾收集器可以在需要时执行此操作,但是当它很长时,我已经经历了OS描述符耗尽。 问题答案: 关于使用FileReader的一般注意事项:FileReader在内部使用FileInputStream,它会覆盖并且因