Tag: 文件 io

C#3.5 ASP.net文件IO问题,UnauthorizedAccessException到网络共享上的文件

每当我尝试访问(只读取 )网络共享“\\ server \ folder1 \ folder2 \ file.pdf”上的文件时,我都会收到UnauthorizedAccessException 。 我冒充域\ aspnet用户,它具有对上述文件夹的读写权限。 该文件不是只读的。 我尝试通过System.Security.Permissions.FileIOPermission查找权限。 它只是说NoAccess所有文件。 我不确定我还能做什么。 我在Framework 3.5,WinXP,IIS 5.1上使用Visual Studio 2008,ASP.net 2.0。

使用filestream从根目录文件夹中读取文件

我的文件夹中有两个图像文件,我必须在我的程序中调用它。 我用过: AppDomain.curentDomain.baseDirectory + “Path and file name”; 但这进入了我不想要的bin目录; 我想从根目录中读取文件夹,其中我的文件夹名称作为资源我已将文件保存在那里并调用图像所以请问那是什么代码? 如何从Windows窗体应用程序中的根目录中读取?

可以在C#中打开的最大文件数是否有限制?

我正在制作一个应用程序,它需要同时打开至少676个文件到最多1400个文件。 我将使用StreamWriter类写入这些文件并使用StreamReader Class读取数据。 那么,对于可以同时打开以便在C#中读取或写入的文件的最大限制,就像VC ++一样,如下面的链接所述。 Windows中打开文件的数量是否有限制 。

使用StreamWriter实现滚动日志,并从顶部删除

我的C#winforms 4.0应用程序一直使用线程安全的编写器来执行内部调试日志记录信息。 当我的应用程序打开时,它会删除该文件并重新创建它。 当应用关闭时,它会保存文件。 我想要做的是修改我的应用程序,以便它可以附加而不是替换。 这是一个简单的修复。 但是,这是我的问题: 我想保留我的日志文件最大10兆字节。 我的约束很简单。 当您关闭文件时,如果文件大于10兆字节,则删除前10%。 是否有一种“更好”的方式,然后执行以下操作: 关闭文件 检查文件是否大于10兆 如果是这样,请打开该文件 解析整个事情 剔除前10% 把文件写回来 关 编辑:好吧,我最后滚动自己(如下所示)移动到Log4Net的建议是一个很好的建议,但是学习新库和移动所有日志语句(数千)的时间不是时间对我试图做的小改进有效。 private static void PerformFileTrim(string filename) { var FileSize = Convert.ToDecimal((new System.IO.FileInfo(filename)).Length); if (FileSize > 5000000) { var file = File.ReadAllLines(filename).ToList(); var AmountToCull = (int)(file.Count * 0.33); var trimmed = file.Skip(AmountToCull).ToList(); File.WriteAllLines(filename, trimmed); } }

在C#中搜索子目录

我有一个文件名列表,我想搜索一个目录及其所有子目录。 这些目录每个包含大约200,000个文件。 我的代码找到了该文件,但每个文件大约需要20分钟。 有人可以提出更好的方法吗? 代码片段 String[] file_names = File.ReadAllLines(@”C:\file.txt”); foreach(string file_name in file_names) { string[] files = Directory.GetFiles(@”I:\pax\”, file_name + “.txt”, SearchOption.AllDirectories); foreach(string file in files) { System.IO.File.Copy(file, @”C:\” + textBox1.Text + @”\N\O\” + file_name + “.txt” ); } }

序列化字节数组与XML文件

我大量使用字节数组来传输对象,原始数据,通过网络和返回。 我通过一个类型实现ISerializable来适应java的方法,它包含两个方法,作为接口的一部分,ReadObjectData和WriteObjectData。 任何使用此接口的类都会将日期写入字节数组。 像那样的东西 class SerializationType:ISerializable { void ReadObjectData (/*Type that manages the write/reads into the byte array*/){} void WriteObjectData(/*Type that manages the write/reads into the byte array*/){} } 写完所有对象后,我发送一个网络数组。 这实际上是双重问题。 它是通过网络以最高效率(速度,大小)发送数据的正确方法吗? 您是否会使用此方法将对象写入文件,而不是通常使用xml序列化? 编辑#1 Joel Coehoorn提到了BinaryFormatter。 我从未使用过这门课。 除了我目前在msdn上看到的内容之外,你会详细说明,提供好的例子,参考资料,建议,当前的做法吗?

使用XML文件在C#中存储数据

我基本上都在寻找有人指出我正确的方向。 我阅读了一些Microsoft文档,但这不是很有帮助。 这是我第一次尝试使用XML。 我正在编写一个需要存储已知用户列表的应用程序以及每个用户创建的别名列表。 我已经弄清楚如何在应用程序关闭时将我的列表序列化并存储到XML文件中,并让它在应用程序再次打开时检索它们,但我不想将用户和别名列表保留在内存中。 为了实现这一点,我需要能够在运行时搜索,编辑和附加到XML文件。 我设想的XML结构是这样的: Username-1 Alias-1 6135551234 Alias-2 6131238888 每个用户只有一个用户名,但可能有多个别名。 我需要能够添加用户,向新用户或现有用户添加别名并更改现有别名。 用户名永远不会改变,可以删除整个用户记录。 到目前为止,我在C#中使用的唯一XML使用了序列化,但我不认为这种方法适用于上述方法。 private void WriteXML() { try { System.Xml.Serialization.XmlSerializer XMLwriter = new System.Xml.Serialization.XmlSerializer(typeof(MessageRecord)); System.IO.StreamWriter XMLfile = new System.IO.StreamWriter(“Saved MessageRecords.xml”); foreach (MessageRecord mr in OutgoingMessages) { XMLwriter.Serialize(XMLfile, mr); } XMLfile.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } }

如何读取日志文件的最后“n”行

需要一段代码来读出日志文件的最后“n行”。 我从网上得到了以下代码。我是C sharp的新手。 由于日志文件可能非常大,我想避免读取整个文件的开销。有人建议任何性能增强。 我真的不想读每个角色并改变位置。 var reader = new StreamReader(filePath, Encoding.ASCII); reader.BaseStream.Seek(0, SeekOrigin.End); var count = 0; while (count <= tailCount) { if (reader.BaseStream.Position <= 0) break; reader.BaseStream.Position–; int c = reader.Read(); if (reader.BaseStream.Position <= 0) break; reader.BaseStream.Position–; if (c == '\n') { ++count; } } var str = reader.ReadToEnd();

从c#web app中的网络共享访问文件

我有一个Web应用程序,需要从网络共享中读取(并可能写入)文件。 我想知道最好的方法是什么? 我不能给网络服务或aspnet帐户访问网络共享。 我可以使用模仿。 网络共享和Web应用程序都托管在同一个域上,我可以专门为此目的在域上创建新用户但是我不太确定如何在创建文件流和指定要使用的凭据之间加入点在Web应用程序中。 遗憾的是,驱动器未映射为计算机上的网络驱动器,它仅作为网络共享提供给我,所以不幸的是我无法进行透明呼叫。 我可以通过冒充来考虑一个问题…我只能冒充每个应用程序域的一个用户,但我很高兴能够得到纠正。 我可能需要将此文件写入多个不同的共享,这意味着我可能需要冒充几个用户。 我喜欢创建令牌的想法……如果我能做到这一点,我将能够预先使用他们的凭据,然后动态应用安全性并在访问被拒绝时给他们有意义的错误消息…我我要去玩,但我会回来更新。