Tag: 文件

好好又干净的方式等到文件关闭

可能重复: 等到文件在.NET中解锁 我有一个打开的文件,如.Doc或.txt,我必须等到用户关闭它。 我已经尝试了这个,根据等待文件在.NET中解锁 : while (true) { try { using (FileStream Fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None, 100)) { //the file is close break; } } catch (IOException) { //wait and retry Thread.Sleep(1000); } } 这很好用,但是有可能找到没有try / catch的解决方案并处理exception?

是否可以使用.NET跟踪文件操作?

是否有可能以某种方式调用文件操作(如打开或关闭),我可以在操作系统请求进行之前处理它,如果可能,可以通过.NET取消它? 如果.NET没有这样的能力,我该怎么做?

读取文件特定行号的有效方法。 (奖金:Python手册错误打印)

我有一个100 GB的文本文件,这是一个来自数据库的BCP转储。 当我尝试用BULK INSERT导入它时,我在行号219506324上得到了一个神秘的错误。在解决这个问题之前我想看看这行,但是我最喜欢的方法是 import linecache print linecache.getline(filename, linenumber) 抛出MemoryError 。 有趣的是,手册说 “这个函数永远不会抛出exception。” 在这个大文件中,当我尝试读取第1行时,它会抛出一个,我有大约6GB的可用RAM … 我想知道到达那条无法到达的线路最优雅的方法是什么。 可用的工具是Python 2,Python 3和C#4(Visual Studio 2010)。 是的,我明白我总能做点什么 var line = 0; using (var stream = new StreamReader(File.OpenRead(@”s:\source\transactions.dat”))) { while (++line < 219506324) stream.ReadLine(); //waste some cycles Console.WriteLine(stream.ReadLine()); } 哪个会奏效,但我怀疑这是最优雅的方式。 编辑:我正在等待关闭此线程,因为包含该文件的硬盘正在被另一个进程使用。 我将测试建议的方法和报告时间。 谢谢大家的建议和意见。 结果是我实施了Gabes和Alexes方法来查看哪一个更快。 如果我做错了什么,请告诉我。 我正在使用Gabe建议的方法在我的100GB文件中使用第10百万行,然后使用Alex建议的方法,我将其松散地翻译成C#…我自己添加的唯一内容是,首先阅读300 MB文件到内存只是为了清除硬盘缓存。 const string file = […]

基本文件版本diff算法

我正在寻找一种解决方案来比较同一文件的两个版本,以获得变化/差异的表示。

如何使用Stream获取图像大小(wxh)

我有这个代码我用来读取上传的文件,但我需要获得图像的大小,但不知道我可以使用什么代码 HttpFileCollection collection = _context.Request.Files; for (int i = 0; i < collection.Count; i++) { HttpPostedFile postedFile = collection[i]; Stream fileStream = postedFile.InputStream; fileStream.Position = 0; byte[] fileContents = new byte[postedFile.ContentLength]; fileStream.Read(fileContents, 0, postedFile.ContentLength); 我可以正确地获取文件但是如何检查它的图像(宽度和大小)先生?

轻松将整个类实例写入XML文件并重新读入

我有一个名为theGarage的主类,它包含我们的客户,供应商和工作类的实例。 我想将程序数据保存到XML文件,我使用了下面的代码(只是一个片段,我有其他类的匹配代码)。 我想知道是否有一种更简单的方法来执行此操作,例如将整个theGarage类写入XML文件并将其读入,而无需像下面那样编写所有这些代码。 public void saveToFile() { using (XmlWriter writer = XmlWriter.Create(“theGarage.xml”)) { writer.WriteStartDocument(); /// writer.WriteStartElement(“theGarage”); writer.WriteStartElement(“Customers”); foreach (Customer Customer in Program.theGarage.Customers) { writer.WriteStartElement(“Customer”); writer.WriteElementString(“FirstName”, Customer.FirstName); writer.WriteElementString(“LastName”, Customer.LastName); writer.WriteElementString(“Address1”, Customer.Address1); writer.WriteElementString(“Address2”, Customer.Address2); writer.WriteElementString(“Town”, Customer.Town); writer.WriteElementString(“County”, Customer.County); writer.WriteElementString(“PostCode”, Customer.Postcode); writer.WriteElementString(“TelephoneHome”, Customer.TelephoneHome); writer.WriteElementString(“TelephoneMob”, Customer.TelephoneMob); //begin vehicle list writer.WriteStartElement(“Vehicles”); foreach (Vehicle Vehicle in Customer.Cars) { writer.WriteStartElement(“Vehicle”); writer.WriteElementString(“Make”, Vehicle.Make); […]

如何动态创建包含所有表的新SQLite数据库?

当用户启动我的应用程序时,他或她可以创建一个新项目,这意味着创建一个包含所有表的新数据库。 我不想从较旧的数据库/项目中复制表的结构,因为在此期间,由于程序的更新,表可能已更改。 这会导致崩溃。 因此,在部署的每个应用程序更新中,我还应该部署一个创建数据库和表的脚本文件,对吧? 脚本文件应该是什么样的,如何在C#中调用它?

C#文件路径重用

我正在尝试在C#中编写一个静态成员函数,或者在.NET Framework中找到一个将文件路径重写为文件系统指定内容的文件路径。 例: string filepath = @”C:\temp.txt”; filepath = FileUtility.RecaseFilepath(filepath); // filepath = C:\Temp.TXT // Where the real fully qualified filepath in the NTFS volume is C:\Temp.TXT 我已经尝试了下面的代码和它的许多变体,它仍然无法正常工作。 我知道Windows一般不区分大小写,但我需要将这些文件路径传递给ClearCase,后者考虑文件路径大小写,因为它是Unix和Windows应用程序。 public static string GetProperFilePathCapitalization(string filepath) { string result = “”; try { result = Path.GetFullPath(filepath); DirectoryInfo dir = new DirectoryInfo(Path.GetDirectoryName(result)); FileInfo[] fi = dir.GetFiles(Path.GetFileName(result)); if (fi.Length […]

C#配置文件

好的,所以提前一段时间我发布了如何阅读其他程序的其他配置文件(这里是链接上一篇文章 。我设法做到了。但现在还有另外一个问题。场景是这样的,我有两个程序。程序A从配置文件读取其配置,程序B仅用于修改A读取的配置文件的内容。配置文件的名称是email.config 。它位于程序A和B所在的目录中。 问题是我使用打开文件对话框获取附件文件的路径。 如果路径指向同一目录中的文件,则程序运行完美! 但如果它指向目录外的文件,则会抛出System.NullReferenceException类型的exception。 这是代码 private void saveBtn_Click(object sender, EventArgs e) { try { // save everything and close string attachment = attachTxtBox.Text; var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFileName }; // it throws exception here when // the path points to a file outside the exes directory Configuration externalConfig = […]

重命名文件夹c#中的文件

我在文件夹中有超过1000个文件,名称为abc_1,abc_2 … abc_n 我想从所有文件中删除此前缀’abc_’。 任何机会不做这个manualy因为他们超过1000并将是痛苦。 怎么用c#做到这一点?