Tag: file io

检查文件夹是否在C#中使用

考虑一个网络文件夹: \\desiis\c$\Company\B2b\Monitor 在该计算机上,任何尝试删除目录Monitor进程都会收到错误,因为LAN上的用户打开了该目录(可能是Windows资源管理器)。 我是否可以通过C#和.NET框架检测是否有任何用户(以及哪个用户)打开/正在使用某个特定目录?

System.IO与VisualBasic.FileIO

我通常使用C#开发,并且非常习惯使用System.IO。 我最近跑过FileIO库,发现一些优点(例如将项目发送到回收站)非常好。 特别是在我目前正在进行的计划中。 我的问题是,System.IO是否执行VisualBasic.FileIO? 我正在编写的程序将把TB的信息复制到服务器塔上。 我想确保我不会因为我使用的库而失去任何时间。 先感谢您!!!

c#:如何读取文件的各个部分? (DICOM)

我想在C#中读取DICOM文件。 我不想做任何花哨的事情,我现在只想知道如何读取元素,但首先我真的想知道如何读取标题以查看是否是有效的DICOM文件 。 它由二进制数据元素组成。 前128个字节未使用(设置为零),后跟字符串’DICM’。 接下来是标题信息,它被组织成组。 一个示例DICOM标头 前128个字节:未使用的DICOM格式。 其次是人物’D’,’我’,’C’,’M’ 其次是额外的标题信息,例如: 0002,0000,文件元素组Len:132 0002,0001,文件元信息版本:256 0002,0010,传输语法UID:1.2.840.10008.1.2.1。 0008,0000,识别群长:152 0008,0060,形态:MR 0008,0070,制造商:MRIcro 在上面的示例中,标题被组织成组。 组0002hex是文件元信息组,其包含3个元素:一个定义组长度,一个存储文件版本,它们存储传输语法。 问题 如何通过检查128字节前导码后面的“D”,“I”,“C”,“M”字符来读取头文件并validation它是否是DICOM文件? 如何继续解析读取数据其他部分的文件?

将多个文件合并为单个文件

码: static void MultipleFilesToSingleFile(string dirPath, string filePattern, string destFile) { string[] fileAry = Directory.GetFiles(dirPath, filePattern); Console.WriteLine(“Total File Count : ” + fileAry.Length); using (TextWriter tw = new StreamWriter(destFile, true)) { foreach (string filePath in fileAry) { using (TextReader tr = new StreamReader(filePath)) { tw.WriteLine(tr.ReadToEnd()); tr.Close(); tr.Dispose(); } Console.WriteLine(“File Processed : ” + filePath); } tw.Close(); […]

如何在C#中解析文本文件并被绑定?

众所周知,如果您从光盘读取数据,那么您就是IO绑定的,并且您可以比从光盘读取数据更快地处理/解析读取数据。 但这种常识(神话?)并没有反映在我的测试中。 当我读取一个带有double和int的文本文件,每行以空格分隔时,我比物理光盘速度慢得多(因子6)。 文本文件如下所示 1,1 0 2,1 1 3,1 2 更新我在一次读取时使用完整缓冲区执行ReadFile时包含了PInvoke性能,以获得“真实”性能。 ReadFile性能 – ReadFileIntoByteBuffer StringReader.ReadLine性能 – CountLines StringReader.Readline unsafe perf – ParseLinesUnsafe StringReader.Read unsafe char buf – ParseLinesUnsafeCharBuf StringReader.ReadLine +解析性能 – ParseLines 结果是 Did native read 179,0MB in 0,4s, 484,2MB/s Did read 10.000.000 lines in 1,6s, 112,7MB/s Did parse and read unsafe 179,0MB in 2,3s, […]

File.GetLastWriteTime似乎返回’过时’值

我编写了一个工具来收集工具用户指定的时间窗口内的日志文件。 到目前为止,我通过在日志文件上使用File.GetLastWriteTime方法来建立日志文件集合,将其与用户输入和收集的时间进行比较,并根据这些比较的结果进行收集。 这是一个小代码片段: DateTime logFileEnd = File.GetLastWriteTime(matchingActiveLogFile); 但是我注意到我的工具没有收集我认为它应该完成的一些日志文件。 看来这个方法返回的DateTime已经过时了(文件中最近的日志记录比这个日期时间的值更多)。 当我查看相关文件的“修改日期”时,它也“过时”,文件中的最新日志记录比“修改日期”更新。 我如何才能获得准确的“GetLastWriteTime”或“修改日期”值?

如何使用c#显示文件保存到受限位置的UAC提示?

当用户从我的应用程序中保存文件时,他们当前无法保存到受限制的位置(如C :)。 我认为这是一个很好的限制,但我想提供一个UAC提示来提升权限并允许用户保存在受限制的区域。 我已经看到很多关于这个主题的答案,涉及使用’runas’产生具有提升权限的新进程。 此外,似乎可以通过冒充其他用户来完成。 据我所知,这两种方法都要求用户提供用户凭据。 我想要做的基本上就是Windows本身的function。 当您尝试将文件复制到Windows 7中的C:\时(假设您已将UAC设置为其默认级别),您将收到以下提示: 单击带有UAC屏蔽的“继续”按钮后,该文件将复制到C:\,并且不提示输入凭据(假设您已使用管理员权限登录)。 如何在管理员用户的应用程序中复制此行为? 他们不应该冒充任何其他用户,因为他们已经拥有管理员权限。 任何人都可以提供有关Windows在此过程中所做操作的详细信息吗 它们是否使用提升的权限生成新的explorer.exe进程?

.NET 2.0:File.AppendAllText(…) – 线程安全实现

作为闲置好奇心的练习,请考虑以下简单的日志记录类: internal static class Logging { private static object threadlock; static Logging() { threadlock = new object(); } internal static void WriteLog(string message) { try { lock (threadlock) { File.AppendAllText(@”C:\logfile.log”, message); } } catch { …handle logging errors… } } } lock需要围绕File.AppendAllText(…)还是通过自己的实现本身就是线程安全的方法? 搜索有关这方面的信息会产生许多相互矛盾的信息,有些人说是,有些人说不。 MSDN什么也没说。

从路径字符串或FileInfo获取驱动器号

这似乎是一个愚蠢的问题,所以这里是: 除了解析驱动器号的FileInfo.FullPath字符串,然后使用DriveInfo(“c”)等来查看是否有足够的空间来写入此文件。 有没有办法从FileInfo获取驱动器号?

强制关闭C#打开的文件

我在这里发现了一个类似的问题,但它已被关闭/接受并回答“不要那样做”。 我处在这样一种情况,我不关心其他应用程序发生了什么,我想要一个可能被其他人锁定的文件(如果需要可以粗鲁地),并且我可以使用它。 我可能需要移动,重命名或删除此文件。 基本上我需要处理由不清理它的锁的应用程序创建的目录中的文件。 我知道应用程序在我的调用时已完成处理,但我需要在运行时终止锁定。 此外,我似乎与扫描服务器所在远程共享的本地AV软件的读取冲突。 所有这些加起来是一个无法解决的“强制关闭”的情况,所以我可以做我需要的。 有谁知道该怎么办?