jjzjj

FileShare

全部标签

c# - 如何在不锁定文件的情况下将xml反序列化为对象?

我有一个用于数据库的xml文件,这意味着该xml经常更新。对于xml数据库,有一个FileWatcher,一旦xml更新,我就会收到一个事件,然后我将xml反序列化为对象,并检查是否确实发生了变化。我遇到的问题是,一旦我反序列化xml,StreamReader就会锁定文件,因此我在尝试更新它时可能会遇到异常。是否可以在不锁定文件的情况下反序列化xml?XmlSerializerserializer=newXmlSerializer(typeof(MyType));Streamreader=newFileStream(File,FileMode.Open);varmyType=(MyTy

c# - 为什么 FileShare 不能按预期工作?

在编写一些处理日志和文件的代码时,我在Windows文件io中发现了一些令人困惑的行为。有谁知道为什么这个测试会失败并显示“无法读取文件”消息?[TestMethod]publicvoidSouldAllowReads(){using(varfile=File.Open(_path,FileMode.Create,FileAccess.Write,FileShare.Read)){using(varfile2=File.Open(_path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)){//worksok,doesn'tthro

python - 如何在具有 FileShare 权限的 Windows 上使用 Python 打开文件?

我看到这个问题:HowcanIreadafileevenwhengettingan"inusebyanotherprocess"exception?在Windows7上使用Python是否有等效的方法来执行此操作?我需要修改一个文件,但仍然让其他进程在它在Python中打开时读取它。根据Python文档,可用模式是“r”、“w”、“a”和“r+”,分别代表读、写(覆盖)、追加和读/写。我看不到设置“文件共享”模式的方法。 最佳答案 如果需要精细控制共享模式,可以使用win32file.CreateFile打开文件。ActiveSta

Windows 文件共享 : What ACE AccessMask flags correspond to the different share permissions?

最近我尝试使用WMI创建一个共享并向用户授予读写权限。现在使用0x1(FILE_READ_DATA/FILE_LIST_DIRECTORY)和0x2(FILE_WRITE_DATA/FILE_ADD_FILE)不起作用。设置所有标志让我完全控制。我必须使用哪些标志分别设置读取、更改和完全控制共享权限? 最佳答案 我通过反复试验发现了以下内容:对于读取权限,您需要使用0x1200A9。这对应于以下标志:FILE_READ_DATA(file)orFILE_LIST_DIRECTORY(directory)1(0x1)FILE_READ

windows - 使用 Share-Delete 打开文件是否允许其他人写入?

FileShare枚举提供各种标志,例如读取、写入、删除...。通常我会认为共享文件删除只允许删除而不能做其他事情(比如阅读)。但是,我依稀记得Windows只区分文件的只读访问权限和完全访问权限,因此实际上为删除而共享也允许写入文件。遗憾的是,这是很多年前的事了,我既没有找到原始来源,也没有找到任何相关信息。是否有关于实际行为的可靠规范?它取决于操作系统还是FS? 最佳答案 查看CreateFileFunction的文档.FILE_SHARE_DELETE:Enablessubsequentopenoperationsonafil

非域 Windows 环境中的 C# 编程远程文件夹/文件身份验证

在非域环境中尝试在远程计算机上读取和写入文件时,我需要能够以编程方式进行身份验证。当您在WindowsRUN提示符中键入类似于\\targetComputer\C$\targetFolder或\\targetComputer\admin$的命令时,如果targetComputer不在域中,系统将提示您输入用户名和密码。输入用户名和密码后,您就可以完全访问远程文件夹。如何在C#中以编程方式完成此身份验证?我试过了..--模拟,但它似乎只在域环境中工作。--CMDKEY.exe,不过好像也只能在域环境下运行。一定有办法做到这一点,但到目前为止,我一直在高低搜索,但没有运气。也许我只是在寻找

windows - Nant - 检查远程共享是否已经存在

我们正在使用Nant部署应用程序,需要确保在此过程中创建共享。我们使用psexec和netshare创建共享,但如果共享已经存在,这将失败并停止Nant。有什么方法可以检测共享是否已经存在?要么在尝试创建共享之前,要么能够检测到2的返回码或Thenamehasalreadybeenshared来自psexec的消息?我试过了directory::exists但这总是返回false。我已经尝试将文件复制到远程目录和file::exists但这总是返回false。 最佳答案 看来我的变量和路径有问题:但是不起作用:工作正常!

c# - 关闭文件时删除

使用语言:C#理论:我想在临时文件夹中创建一个带有标记FileOptions.DeleteOnClose的文件。文件已成功创建,我将dato写入其中,下一步是启动与文件关联的应用程序Process.Start(...)并允许用户检查文档,最后我关闭我的句柄,一旦其他进程关闭临时文件的句柄,操作系统就会删除该文件。我的问题是其他进程无法打开文件,即使是读取文件,尽管我添加了FileShare.ReadWrite|FileShare.Delete到共享模式。有什么建议吗? 最佳答案 其他进程打开DeleteOnClose文件时需要指定F

c# - 文件共享未按预期工作

我有一个文件共享问题,我的进程正在尝试读取一个日志文件,而它当前仍由NLog打开。在诊断问题时,我发现了一些令人惊讶的事情。以下失败:using(varfileStream1=newFileStream("test.file",FileMode.Append,FileAccess.Write,FileShare.Read))using(varfileStream2=newFileStream("test.file",FileMode.Open,FileAccess.Read,FileShare.Read)){}第二个FileStream构造函数调用失败:System.IO.IOExce

C# 文件读/写文件共享似乎不起作用

我的问题是基于继承大量我无能为力的遗留代码。基本上,我有一个可以生成数据block的设备。一个将调用设备以创建该数据block的库,出于某种我不完全理解的原因,即使我想更改也无法更改,将该数据block写入磁盘。此写入不是即时的,但最多可能需要90秒。在那个时候,用户想要获得正在生成的数据的部分View,所以我想要一个消费者线程来读取另一个库正在写入磁盘的数据。在我接触这个遗留代码之前,我想使用我完全控制的代码来模拟这个问题。我正在使用C#,表面上是因为它提供了很多我想要的功能。在生产者类中,我使用以下代码创建一个随机数据block:FileStreamtheFS=newFileStr
12