Tag: file io

如何识别是否打开文件夹?

在我的应用程序中,我正在尝试重命名该文件夹,但如果在Windows资源管理器中打开该文件夹,则会收到IOException 。 如何识别是否在C#中的Windows资源管理器中打开文件夹?

取消openfiledialog时如何防止exception?

我的程序有一个按钮,当点击它打开一个openfiledialog来选择一张图片: private string ChoosePicture() { fDialog.Title = “Select Picture”; fDialog.Filter = “Image Files (*.bmp, *.gif, *.jpg)|*.bmp; *.gif*;*.jpg”; fDialog.InitialDirectory = “C:”; fDialog.ShowDialog(); fDialog.AddExtension = true; fDialog.CheckFileExists = true; fDialog.CheckPathExists = true; //returns a string for the directory return fDialog.FileName.ToString(); } 使用dialogresult框上的检查还没有解决我的问题: fDialog.AddExtension = true; fDialog.CheckFileExists = true; fDialog.CheckPathExists = true; DialogResult res = fDialog.ShowDialog(); if (res […]

C#超大字符串操作(内存不足)

我需要从磁盘读取1gb原始文本文件到ram以在C#中进行一些字符串操作。 string contents = File.ReadAllText(path) 抛出内存exception(不出所料) 最好的方法是什么?

mscorlib.dll中出现未处理的“System.UnauthorizedAccessException”类型exception:拒绝访问路径…

我正在尝试将文件写入存在的目录,并由我在G:\\创建,即not a system directory or in root drive如下所示 File.WriteAllBytes(directoryPath.Replace(“wav”, “mp3”), asBytesArray); 但这让我有这个例外: An unhandled exception of type ‘System.UnauthorizedAccessException’ occurred in mscorlib.dll Additional information: Access to the path ‘G:\Song’ is denied. 我该如何解决这个问题? 请帮忙! 这是在我从Visual Studio调试时出现的,我不知道如何为作为调试运行的应用程序提供管理权限

格式化文本文件,完成解析后如何更新文件?

我如何打开文件,对文件执行一些正则表达式,然后保存文件? 我知道我可以打开一个文件,逐行读取,但是如何更新文件的实际内容然后保存文件?

在文件中查找文本并检索行号

我试图(以编程方式)查找对特定字符串的引用,即大量VB6文件中的“LOCK_ID”。 为了帮助人们直接导航到参考,我还想检索匹配的行号。 即: 搜索所有VB6文件以供参考 如果找到引用,我想检索引用所在的行号。 如果没有打开目录中的每个文件并遍历文件并记住我正在检查搜索词的哪一行,是否有更快/更简单的方法来实现这一目标?

检测File.Move是否需要“复制 – >删除”或仅更改文件系统表中的位置

免责声明:我会马上承认,我对文件系统如何运作的细节有相当多的无知。 我一直在使用NTFS这么长时间,我可以根据我目睹的行为推断出正在发生的事情,以及我从互联网上的dorking所学到的一切 – 但是…… 我希望有一种方法可以检测是否将文件从“位置A”移动到“位置B”,操作是否需要等效的“File.Copy – > File.Delete”或者是否不会复制实际的文件数据,但只是更新“主文件表”中的位置等。 出于各种目的,我有时会移动大量的大文件。 我想在UI中报告进度。 我意识到当我调用File.Move并将文件从一个磁盘/分区上的某个位置移动到另一个磁盘/分区时,该函数将有效地在磁盘/分区之间“复制文件数据 – >删除”。 当遇到这种情况时,我希望能够检测到这种情况会发生,所以我可以使用我编写的代码来复制文件并在传输字节时提供详细的进度报告,这样我就可以经常更新UI中的进度条。 当它在同一个磁盘/分区上时,因为更新主文件表中的位置是如此之快,我只需在file.Move函数为我批量移动的每个文件完成时更新进度条。 使用.NET 4(C#),是否可以通过其他方式检测调用File.Move是否需要等效的“复制 – >删除”操作,或者只是更新文件表而不是复制文件数据? 编辑: 正如我在下面的评论中指出的那样,我认为可能做到这一点的可能性是检测给定的源文件位置和目标文件位置是否位于同一物理磁盘和分区上,如果是这样,这是否意味着我可以准确预测行为并决定要调用哪些函数 – 内置的File.Move函数用于“近即时”更新文件系统表,我相信在移动到相同磁盘/部件时会发生这种情况,或者我更详细的’报告进度每个’x’字节复制’自定义文件复制代码。 文件传输速度在我的程序运行的机器上会有很大差异,所以我希望能够在可能的情况下报告详细的进度/当前的传输速度。 注 – 程序可能正在使用网络UNC路径,这些路径可以使用具有相同根路径的不同物理磁盘,即:\\ somename \ shares \ workfolder \ project可能位于不同的物理磁盘上,然后是\\ somename \ shares \ workfoldder \ otherproject 。 因此,我需要一种方法来检测分区ID或物理磁盘ID,以查看同一磁盘/分区上的源文件夹和目标文件夹。 谢谢

StreamWriter.WriteLine()无法正常工作

我试图使用StreamWriter.WriteLine(非静态)将几行(一次一行)写入.txt文件。 const string filename = “BasicTestInfo.txt”; using (var writer = new StreamWriter(filename, false)) { writer.WriteLine(“{0} 350 200 200 10 2 28 20 200 2500 1200 1 1”, Player1); writer.WriteLine(“{0} 300 150 150 4 2 15 18 150 2500 1000 1 0”, Player2); writer.WriteLine(“{0} 200 140 450 25 14 10 70 4500 2500 750 1 1”, […]

如何删除文件夹及其内容,而不将其放入回收站?

我正在创建一个程序来在驱动器上运行文件I / O压力,当它完成后,我想删除文件,但不想将它们放在回收站中。 这是我现在的代码: public static void DeleteDirectory(string target_dir) { //Delete the files and folders created during stress. string[] files = Directory.GetFiles(target_dir); string[] dirs = Directory.GetDirectories(target_dir); foreach (string file in files) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } foreach (string dir in dirs) { DeleteDirectory(dir); } Thread.Sleep(30); Directory.Delete(target_dir, true); } 但是这段代码只是将文件移动到回收站。 我不想添加代码来自动清空回收站,因为那里可能有文件我不想删除(文件可能属于其他人)。 注意:从迄今为止的回复来看,似乎人们可能会误解我在这里要做的事情。 当我的程序删除文件时,它会将它们发送到回收站。 我不希望这种情况发生,我想立即删除文件。 我没有看到任何方法告诉系统删除​​文件而不将它们发送到回收站。 我永远不需要恢复文件。 […]

如何在.NET中从大文件的中间插入或删除字节

是否有可能从大文件的中间有效插入或删除字节,如果是这样的话? 或者我在插入或删除数据之后是否重写了整个文件? [A lot of Bytes][Unwanted Bytes][A lot of Bytes] – > [A lot of Bytes][A lot of Bytes] or [A lot of Bytes][A lot of Bytes] – > [A lot of Bytes][New Inserted Bytes][A lot of Bytes]