Tag: file io

使用C#在富文本框中打开文件

这个问题已得到解答。 我推荐下面的sumit_programmers解决方案。 现在,我已经删除了我的代码,认为它比有用的更令人困惑。 当我进一步开发它时,也许我会在这里发布我的代码,并附上一些评论。 您可能还对使用C#从富文本框中保存文本的问题的答案感兴趣。 有一个答案让人想起这个问题的答案。 代码应该可以工作,但它是由我编写的,因此可能存在一些错误或缺少信息。 更新:我对代码进行了一些改进(至少我认为是这样)。 “Encoding.Default”似乎适用于最常见的编码,如ANSI。 如果编码是UTF-8而没有字节顺序标记(BOM),那么似乎“Encoding.Default”不起作用。 有关更多信息,请访问informit.com/guides 。 这是我现在正在使用的代码: private void fileOpen_Click(object sender, EventArgs e) { using (OpenFileDialog dlgOpen = new OpenFileDialog()) { try { // Available file extensions dlgOpen.Filter = “All files(*.*)|*.*”; // Initial directory dlgOpen.InitialDirectory = “D:”; // OpenFileDialog title dlgOpen.Title = “Open”; // Show OpenFileDialog box if (dlgOpen.ShowDialog() […]

如何在使用.NET时限制文件碎片?

在我的应用程序中,我随着时间的推移将小数据位收集到更大的文件中。 结果,目标文件变得过分碎片化。 使用.NET可以做些什么来限制输出文件的碎片?

当文件被锁定时,模拟等待文件。在C#中打开

基本上,我和这张海报有同样的问题,但是在C#中: 等待文件可以用Win32读取 更多信息:我们的代码在我们的一个项目中调用File.Open ,当文件已被另一个进程( EDIT:或线程)打开时偶尔会死掉: FileStream stream = File.Open(m_fileName, m_mode, m_access); /* do stream-type-stuff */ stream.Close(); File.Open将抛出一个IOException (当前正在某处悄悄吞下),其HResult属性为0x80070020 ( ERROR_SHARING_VIOLATION )。 我想做的是: FileStream stream = null; while (stream == null) { try { stream = File.Open(m_fileName, m_mode, m_access, FileShare.Read); } catch (IOException e) { const int ERROR_SHARING_VIOLATION = int(0x80070020); if (e.HResult != ERROR_SHARING_VIOLATION) throw; else […]

如何找出目录中有多少文件?

我需要计算目录中的文件数。 我可以使用System.IO.Directory.GetFiles()获取目录中所有文件的名称,并获取该数组的长度,但在大型目录上需要太长时间。 有没有办法获得计数而不必得到名字?

如何从文件路径名中提取文件名?

我需要将所有文件从源文件夹移动到目标文件夹。 如何从文件路径名中轻松提取文件名? string newPath = “C:\\NewPath”; string[] filePaths = Directory.GetFiles(_configSection.ImportFilePath); foreach (string filePath in filePaths) { // extract file name and add new path File.Delete(filePath); }

如何在C#中更改文件创建时间?

我想知道如何在C#中更改文件创建时间?

C#I / O – System.IO.File和StreamWriter / StreamReader之间的区别

假设我只对处理文本文件感兴趣,与StreamWriter相比,System.IO.File方法提供了哪些具体的优点或缺点? 是否涉及任何性能因素? 基本的区别是什么,在哪些情况下应该使用哪些? 还有一个问题,如果我想将文件的内容读入字符串并对其运行LINQ查询,哪个最好?

在C#中使用LockFileEX

背景 我正在尝试在我的C#应用​​程序中实现块文件锁定。 如果内置的FileStream.Lock方法无法获取锁定,则会引发exception。 底层的LockFile方法返回状态代码但是我不想使用自旋锁来等待文件被解锁。 题 有没有人在C#中有任何代码片段,显示如何使用wait句柄正确构造OVERLAPPED结构并将其传递给LockFileEx并等待操作完成? 我试图避免使用Overlapped.Pack方法,因为它们不安全,但主要是因为它们需要IOCompletionCallback ,这不是我想要实现的。 我有声明,但OverLapped结构的构造和使用似乎有点复杂。 注意 :我知道我需要手动固定重叠结构,直到等待完成。 我目前的代码如下: ManualResetEvent evt = new ManualResetEvent(false); OVERLAPPED overlapped = new OVERLAPPED(); overlapped.OffsetLow = offsetLow; overlapped.OffsetHigh = offsetHigh; overlapped.hEvent = evt.SafeHandle; GCHandle h = GCHandle.Alloc(overlapped, GCHandleType.Pinned); int hr = Win32.LockFileEX(_handle, LockFlags.Exclusive, 0, offsetLow, offsetHigh, GCHandle.ToIntPtr(h)); if(hr == 0) { int error = Marshal.GetLastWin32Error(); if(error = […]

调用等待GetFileAsync()永远不会返回,应用程序在WinRT应用程序中挂起

我试图在应用程序启动时加载和读取设置文件,大约90%的时间, await GetFileAsync(“filename.xml”); 永远不会返回,因此,悬挂应用程序。 大约四分之一的时间,如果我单步执行代码,它实际上将返回并读取文件。 这是代码的一个非常简化的版本: App.xaml.cs: protected override void OnLaunched(LaunchActivatedEventArgs args) { FileLoader.Load().Wait(); // File-load dependent stuff } FileLoader.cs: public async static Task Load() { StorageFolder folder = ApplicationData.Current.LocalFolder; StorageFile file; bool fileExists = true; try { // The following line (often) never returns file = await folder.GetFileAsync(“filename.xml”); { catch { fileExists = false; […]

C#:将CookieContainer写入磁盘并重新加载以供使用

我有一个名为CookieJar的HttpWebRequest / HttpWebResponse会话中提取的CookieContainer 。 我希望我的应用程序在运行之间存储cookie,因此在一次运行程序中在CookieContainer收集的cookie也将在下一次运行时使用。 我认为这样做的方法是以某种方式将CookieContainer的内容写入磁盘。 我的问题是: 如何将CookieContainer写入磁盘 ? 是否有内置function,或者,如果没有,人们采取了哪些方法? 有没有可用于简化此类的课程? 一旦你将CookieContainer写入磁盘, 你如何重新加载它 ? 更新:第一个答案建议CookieContainer 序列化 。 但是,我不太熟悉如何序列化和反序列化这些复杂的对象。 你能提供一些示例代码吗? 建议是使用SOAPFormatter 。