C# 是否可以确保某个文件可以在不打开的情况下写入?
我编写了一个用于选择输出文件名的自定义控件,其中包含文件名的典型文本框、“浏览”按钮以及一些特定于我的应用程序的其他功能 文本框的颜色根据文件名的不同而变化。如果无法写入文件位置,它将变为红色。如果该文件已经存在,它将变为黄色。否则,它将保留系统指定的颜色 为了查看文件是否存在,我使用IO.file.exists;很简单 我将“if the file can write to”实现为一个简单的try-catch块,其中实际打开了一个文件,在其中写入了一些内容,关闭了一些内容,然后删除了一些内容。如果在任何时候抛出异常,我知道用户不能使用该文件名,我会将文本框变成红色 这是一个包罗万象;因为我正在做我打算做的实际操作,这是很简单的。然而,让软件疯狂地创建和删除文件,只是为了看看是否可以,这似乎是不负责任的 所以我的问题是,如何在不创建文件的情况下复制此功能?我知道我必须:C# 是否可以确保某个文件可以在不打开的情况下写入?,c#,.net,vb.net,file-io,C#,.net,Vb.net,File Io,我编写了一个用于选择输出文件名的自定义控件,其中包含文件名的典型文本框、“浏览”按钮以及一些特定于我的应用程序的其他功能 文本框的颜色根据文件名的不同而变化。如果无法写入文件位置,它将变为红色。如果该文件已经存在,它将变为黄色。否则,它将保留系统指定的颜色 为了查看文件是否存在,我使用IO.file.exists;很简单 我将“if the file can write to”实现为一个简单的try-catch块,其中实际打开了一个文件,在其中写入了一些内容,关闭了一些内容,然后删除了一些内容。
因此,我的指示器颜色的目的不是为软件提供一种可靠的方式,让软件知道文件可以写入(检查仍然在它实际必须写入的瞬间完成),这是为了向用户表明,至少他已经正确设置了文件名,所以如果他继续,他保证不会覆盖旧数据,并且他几乎可以肯定最后一分钟的IO错误(文件名输入错误)不会让实验未记录下来。我建议这样做-在用户提交操作之前不要检查任何内容。使用当前的方法,即使您验证了该文件是否正常,当用户实际提交写入文件时,它也可能在5秒钟后被锁定。进行初步检查可能只会给用户一个估计成功的错误印象。特别是考虑终端服务器上有100个+同时用户的这一点。 如果没有访问权限,则用Retry/Cancel/etc显示提示没有问题,并让用户决定 编辑: 无意冒犯,但关于如何处理此类碰撞有一些标准。Windows标准是向用户显示提示。也要考虑这一点——如果你突然有一个拒绝访问文件夹,这是你不希望有的,你可能需要雇佣另一个系统/网络管理员。 如果手术费用很高,一定要确保这家伙的薪水很高。拜托,如果你的网络在写作过程中瘫痪了怎么办?硬盘驱动器?路由器?写入文件会被中断的原因有很多,您应该为此做好准备。如果您负担不起,请确保您已经投资了良好的基础设施和优秀的人员来支持它 在地球上,您可以增加成功锁定文件的机会:
- 选择一个唯一的文件名,使用基于日期时间的哈希作为后缀/前缀
- 写入用户的主目录,也称为
,您很可能会成功%UserProfile%
- 选择一个唯一的文件名,使用基于日期时间的哈希作为后缀/前缀
- 写入用户的主目录,也称为
,您很可能会成功%UserProfile%