Tag: file io

运行已安装的应用程序时,Environment.CurrentDirectory会产生意外结果

背景: 我为我的应用程序构建了一个安装程序,所有我的dll和内容文件都被正确地复制到C:\Program Files\MyCompany\MyApp目录。 当我从Visual Studio运行我的应用程序时,一切都很好。 但是,当我运行我的应用程序的安装版本时,我收到DirectoryNotFoundException 。 问题似乎与Environment.CurrentDirectory 。 我期待Environment.CurrentDirectory是…… “C:\\Program Files\\MyCompany\\MyApp” ……但实际上…… “C:\\Documents and Settings\\DanThMan” 这里发生了什么? 我该如何解决这个问题? 谢谢。 编辑: 好的,嗯。 如果我运行开始菜单快捷方式,则只会出现此问题。 如果我直接运行MyApp.exe,一切都很好。 编辑2: 我想我现在已经深究了这一点。 在我的安装程序(Visual Studio SetupProject)中,“开始”菜单快捷方式有一个名为WorkingFolder的属性,该属性“指定将安装快捷方式的目标应用程序的文件夹”。 我不小心将WorkingFolder设置为“MyCompany”。 它应该是“应用程序文件夹”。 现在我已正确设置它, Environment.CurrentDirectory再次按预期工作。 感谢你的帮助。 编辑3: 但是,阅读下面的警告,我决定使用以下内容作为Environment.CurrentDirectory的替代: System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

StreamWriter.Write不写入文件; 没有exception抛出

我在C#中的代码(asp.net MVC) StreamWriter tw = new StreamWriter(“C:\\mycode\\myapp\\logs\\log.txt”); // write a line of text to the file tw.Write(“test”); 文件已创建但为空。 没有例外。 我以前从未见过这个,我被困在这里; 我只需要编写一些调试输出。 请指教。

读取和写入文件C#时共享违规IOException

这是我的代码: public static TextWriter twLog = null; private int fileNo = 1; private string line = null; TextReader tr = new StreamReader(“file_no.txt”); TextWriter tw = new StreamWriter(“file_no.txt”); line = tr.ReadLine(); if(line != null){ fileNo = int.Parse(line); twLog = new StreamWriter(“log_” + line + “.txt”); }else{ twLog = new StreamWriter(“log_” + fileNo.toString() + “.txt”); } System.IO.File.WriteAllText(“file_no.txt”,string.Empty); […]

如何在多个线程的单个文件中写入?

我在C#中创建Windows应用程序,我想用多个线程编写多个文件。 我从不同的端口获取数据,并且每个端口都有一个文件。 是否有可能为每个端口创建线程并一次又一次地使用相同的线程将数据写入相应的文件? 假设我从端口10000,10001,10002获取数据,并且有三个文件,如10000.txt,10001.txt和10002.txt。 我必须分别创建三个线程来将数据写入这三个文件,我想一次又一次地使用这些线程。 可能吗? 如果可能,请您提供一小段代码吗?

将XML写入文件而不覆盖以前的数据

我目前有一个C#程序,它使用.NET Framework将数据写入XML文件。 if (textBox1.Text!=”” && textBox2.Text != “”) { XmlTextWriter Writer = new XmlTextWriter(textXMLFile.Text, null); Writer.WriteStartDocument(); Writer.WriteStartElement(“contact”); Writer.WriteStartElement(“firstName”); Writer.WriteString(textBox1.Text); Writer.WriteEndElement(); Writer.WriteEndElement(); Writer.WriteEndDocument(); Writer.Close(); } else { MessageBox.Show(“Nope, fill that textfield!”); } 问题是我每次尝试保存新内容时都会覆盖我的XML文件。 我已经为XmlTextWriter的第二个参数设置了null和Encoding.UTF8 ,但它似乎并没有改变非覆盖/覆盖function。

如何在Windows Phone 8上使用Windows.Storage正确读取和写入文件

我只需要使用Windows.Storage API简单地写入文件并从Windows Phone 8中的文件读取。 使用旧的IsolatedStorage方法相对容易,但使用新的WinRT APIcertificate它更加困难。 我一直试图写它,但似乎有所有这些奇怪的东西,如IBuffer。 等等。 使用WinRT的完整版本,使用Windows.Storage.FileIO非常容易,它似乎存在,以防止像我这样的开发人员疯狂。 但是,它没有在Phone版本中实现。 此外,我观看了一个Channel9video,其中显示了一些代码示例,但他们犯了一个错误,因为他们使用标记为Security Critical的方法获得常规流。 显然不允许获得常规流。 那么,有人可以为我提供一个简洁而正确的片段,介绍如何将文件读入字符串以及如何将字符串写入文件,并使用正确的使用和处理技术吗?

等待文件被进程释放

如何等待文件自由,以便ss.Save()可以用新的覆盖它。 如果我一起运行两次(ish)我得到一个generic GDI+错误。 /// /// Grabs a screen shot of the App and saves it to the C drive in jpg /// private static String GetDesktopImage(DevExpress.XtraEditors.XtraForm whichForm) { Rectangle bounds = whichForm.Bounds; // This solves my problem but creates a clutter issue //var timeStamp = DateTime.Now.ToString(“ddd-MMM-dd-yyyy-hh-mm-ss”); //var fileName = “C:\\HelpMe” + timeStamp + “.jpg”; var […]

在C#中以最快的方式在超过20,000个文件的目录中查找文件

我有一个每晚都要运行的工作,从根目录下有超过20,000个子文件夹的目录中提取xml文件。 这是结构的样子: rootFolder/someFolder/someSubFolder/xml/myFile.xml rootFolder/someFolder/someSubFolder1/xml/myFile1.xml rootFolder/someFolder/someSubFolderN/xml/myFile2.xml rootFolder/someFolder1 rootFolder/someFolderN 所以看看上面的结构,结构总是一样的 – 一个根文件夹,然后是两个子文件夹,然后是一个xml目录,然后是xml文件。 我只知道rootFolder和xml目录的名称。 下面的代码遍历所有目录,速度极慢。 有关如何优化搜索的任何建议,尤其是目录结构是否已知? string[] files = Directory.GetFiles(@”\\somenetworkpath\rootFolder”, “*.xml”, SearchOption.AllDirectories);

如何使用C#从回收站恢复文件?

将文件移动到回收站并清空回收站已有详细记录,但如何从回收站以编程方式还原文件?

Windows Phone 8:媒体文件访问

有没有办法从Windows Phone 8中的默认音频/video文件夹访问音频和video文件? 我已经检查了这个文档但是WP8上没有实现所有方法(例如KnownFolders.MusicLibrary): http : //msdn.microsoft.com/en-us/library/windows/apps/hh967755.aspx 我需要访问原始文件数据。 如果从C#无法访问来自Windows Phone Runtime或纯C ++的数据也可以。