在Web应用程序中使用相对路径读取文件的内容
如何使用相对路径/url读取文本文件的内容? 这些文件位于我应用程序根的目录中. 我不想指定要访问的文件的完整路径,因为我的测试环境不是我的生产环境的确切镜子. 解决方案 使用Server.MapPath("/path/to/file"),然后将其结果传递给File.ReadAllText(): String template = File.ReadAllText(Server.MapPath("~/Templates/") + filename); 其他解决方案 您也可以使用此代码段. using System.IO; using System.Web.Hosting; using (StreamReader sr = new StreamReader(VirtualPathProvider.OpenFile("~/foo.txt"))) { string content = sr.ReadToEnd(); }
0 2024-04-17
编程技术问答社区
使用C#获得解决方案文件的父文件夹的路径
我是C#的初学者,我有一个文件夹,我从中读了一个文件. 我想读取一个位于解决方案文件的父文件夹中的文件.我该怎么做? string path = ""; StreamReader sr = new StreamReader(path); 因此,如果我的文件XXX.sln在C:\X0\A\XXX\中,则读取.txt C:\X0\A\中的文件. 解决方案 尝试以下方法: string startupPath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName,"abc.txt"); // Read the file as one string. string text = System.IO.File.ReadAllText(startupPath); 其他解决方案 您可以享受这个更通用的解
0 2024-04-17
编程技术问答社区
如何将一个文件放入回收站而不是删除?
程序化解决方案当然... 解决方案 http:http:http:http:http:http://www.daveamenta.com/2008-05/c-delete-a-file-to-the-recycle-bin/ 从上方: using Microsoft.VisualBasic; string path = @"c:\myfile.txt"; FileIO.FileSystem.DeleteDirectory(path, FileIO.UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); 其他解决方案 您需要深入研究非托管代码.这是我一直在使用的静态课程: public static class Recycle { private const int FO_DELETE = 3; private const int FOF_ALLOWUNDO
0 2024-04-17
编程技术问答社区
从一个流中获取一个文本阅读器?
我正在尝试阅读带有System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);的嵌入式文本文件,但它给了我Stream.嵌入式资源是文本文件,因此,如何将此Stream变成TextReader? 解决方案 TextReader tr = new StreamReader(stream); 其他解决方案 a StreamReader是TextReader的子类,因此您可以做: using(var stream = System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream(resource)) using(var reader = new StreamReader(stream)) { // Use reader. } 其他解决方案 您需要从中获
0 2024-04-17
编程技术问答社区
归档日志文件时出现内存不足的错误
我有一个疑问,该控制台作业运行并创建了我在午夜时期存档的每日日志文件. 这将为第二天创建一个空白的日志文件,并在昨天的名称和旧文件的内容的存档文件中创建一个旧文件,用于调试我可能遇到的,直到第二天才知道. . 但是,由于我提高了机器人的作业,因此当我尝试归档文件时,我一直在系统中遇到问题. 首先,我根本无法获取一个存档文件,然后我奏效了一种方法,至少要获得最后的100,000行,这还不够. 我将所有内容包裹在3次尝试/捕获中 i/o 系统不记忆 标准异常 但是,我得到的始终是OutofMemoryException,例如 system.outofmemoryException错误:类型" system.outofmemoryexception"的例外.; 给您一个尺寸100,000行日志的示例,约为11MB文件 标准的完整日志文件可以是1/2 A GB到2GB 的任何东西 我需要知道的是: a)试图使用文件时,标准文本
0 2024-04-17
编程技术问答社区
在C#中,switch语句出现 "使用未分配的局部变量 "的编译器错误?
我有以下C#代码: AnimalTypeEnum animal; string s = Console.ReadLine(); switch (s.ToLower()) { case "dog": animal = AnimalTypeEnum.DOG; break; case "cat": animal = AnimalTypeEnum.CAT; break; case "rabbit": animal = AnimalTypeEnum.RABBIT; break; } Console.WriteLine(animal); #compiler error here 我在最后一行中得到此错误:Use of unassigned local variable 'animal'.我知道这是因为animal可能没有根据用户输入的值,那么我该如何解决? 理想情况下,如果输入未知动物类型并使用户再次输入值,我想显示一条错误消息.
0 2024-04-17
编程技术问答社区
文件流只读取文件的前4个字符
嘿!我正在尝试阅读带有文件流的150MB文件,但是每次完成时,我得到的全部都是:|zl而不是整个流.请注意,其中有一些特殊的字符. 有人知道问题可能是什么吗?这是我的代码: using (FileStream fs = File.OpenRead(path)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); extract = Encoding.Default.GetString(buffer); } 编辑: 我试图阅读所有文本,但它仍然返回了相同的四个字符.除了这几个文件外,它在任何其他文件上都可以正常工作.当我使用所有行时,只会获得第一行. 解决方案 fs.Read()并未一次读取整个字节的整个粉丝,它读取了一些字节并返回读取的字节数. MSDN有一个很好的例子,说明如何使用它来获取整个文件: http://msdn.micros
0 2024-04-17
编程技术问答社区
在C#中移动一个目录及其所有内容(文件或文件夹)的最佳方法是什么?
c#? 中所有内容(文件或文件夹)移动目录的最佳方法是什么 我使用了以下代码,但是它会引发The Directory is not empty例外: Microsoft.VisualBasic.FileIO.FileSystem.MoveDirectory(sourceFullName, destFullName, true); Directory.Move(sourceFullName, destFullName); //Added in edit 解决方案 以下解决方案效果很好: public static void DeleteDirectory(string targetDir) { string[] files = Directory.GetFiles(targetDir, "*", SearchOption.AllDirectories); foreach (string file in files) File.Delet
0 2024-04-17
编程技术问答社区
读取二进制文件时避免LOH
这个问题是跟进 有效的方式将许多二进制文件传输到SQL Server数据库 我最初问为什么使用File.ReadAllBytes会导致快速的内存使用,并使用该方法将数据放在大对象堆上,该数据在运行时不容易被回收. 我现在的问题是如何避免这种情况? using (var fs = new FileStream(path, FileMode.Open)) { using (var ms = new MemoryStream()) { byte[] buffer = new byte[2048]; int bytesRead; while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, bytesRead); } return new Cu
0 2024-04-17
编程技术问答社区
写入文件需要为大流量进行优化 第二部分
让任何人兴趣看看我来自哪里,您可以参考第1部分,但这不是必需的. 写文件需要针对繁忙的流量进行优化 下面是我编写的代码段,我为从经纪人API中捕获了一些财务刻度数据.该代码将不会出错.我需要优化代码,因为在高峰时段,ZF_TICKEVENT方法将每秒调用超过10000次.我使用MemoryStream保存数据,直到达到一定尺寸,然后将其输出到文本文件中. 代理API只是单线螺纹. void zf_TickEvent(object sender, ZenFire.TickEventArgs e) { outputString = string.Format("{0},{1},{2},{3},{4}\r\n", e.TimeStamp.ToString(timeFmt), e.Product.ToString(),
0 2024-04-17
编程技术问答社区
写入文件需要针对大流量进行优化 第三部分
这个问题是第一部分的延续,任何有兴趣查看我来自哪里的人都可以参考第1部分和第2部分,但这不是必需的. 写文件需要针对繁忙的流量进行优化 写文件需要优化为重型交通部件2 现在我有一个工作片段,相关部分如下: public static class memoryStreamClass { static MemoryStream ms1 = new MemoryStream(); public static void fillBuffer(string outputString) { byte[] outputByte = Encoding.ASCII.GetBytes(outputString); ms1.Write(outputByte, 0, outputByte.Length); if (ms1.Length > 8100
0 2024-04-17
编程技术问答社区
C#: 使用FileSystemWatcher来观察文件的变化
好吧,所以我从如何检查是否已更新打开文件我应该使用 filesystemwatcher 观察文件的更改.然后,问题是,如果我必须跟踪许多文件,是否为每个文件创建1个观察器?另外,一旦文件关闭,我必须以某种方式处理观察者.是否有一个Dictionary存储filepath和FileSystemWatcher的路?当我打开更多文件时,我会添加更多的观察者,然后关闭时,请适当地处理观察者.有太多的观察者会是一件坏事吗? 更新 我只是做过 protected void AttachFileMonitor(EditorTabViewModel tab) { string file = tab.FilePath; if (!_fsWatchers.ContainsKey(file)) { var watcher = new FileSystemWatcher(); watc
0 2024-04-16
编程技术问答社区
如何在Windows窗体应用程序中实现键盘按键功能
我想在C#Windows表单应用程序中实现键盘按钮按命令.假设如果达到某些值,我想使用Windows表单应用程序按下按键" L".这可能吗?如何做? 解决方案 这可能会为您带来技巧 但是,更好的方法可能是将您的表单的KeyPreview属性设置为true,然后将代码放入表单的keyDown事件中(并设置e.handled = true,以防止密钥事件从传递到哪个控件具有重点). private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.L) { //Do here } } 您还想查看 编辑 sendkeys "> sendkeys :将击键和击键组合发送到活动应用程序.该课程无法实例化.要将击键发送到课程,并立即继续进行程序的流程,请使用发送.要等击键启动的任何过程,请使用SendWait. 因此,当您
0 2024-04-16
编程技术问答社区
如何移动一个没有文件扩展名的文件?C#
if (File.Exists(@"C:\\Users" + Environment.UserName + "\\Desktop\\test")) { /\ this file has no file extension } 文件test没有扩展名,我需要帮助,以移动或将此文件重命名为带有扩展名的东西 解决方案 没有扩展名与该功能无关. 另外,重命名实际上只是"伪装"的举动,因此您想做的是 File.Move(@"C:\Users\Username\Desktop\test", @"C:\Users\Username\Desktop\potato.txt") 请在字符串之前牢记 @,因为您还没有逃脱过后斜切. 其他解决方案
0 2024-04-16
编程技术问答社区
正确的等待方式,直到文件被创建
我有以下代码: // get location where application data director is located var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); // create dir if it doesnt exist var folder = System.IO.Path.Combine(appData, "SomeDir"); if (System.IO.Directory.Exists(folder) == false) System.IO.Directory.CreateDirectory(folder); // create file if it doesnt exist var file = System.IO.Path.Combine(folder, "test.txt"); if(System.IO.File
0 2024-04-16
编程技术问答社区
StorageFile.OpenAsync中的UnauthorizedAccessException
我使用以下代码下载/保存图像并稍后打开,但是在后来的OpenAsync中,它抛出了未授权的Accessexception,看来该文件不关闭,但实际上是IRANDOMACCESSSTREAM/DATAWRITER已被处置. HttpClient httpClient = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://www.silverlightshow.net/Storage/Users/nikolayraychev/Perspective_Transforms_4.gif"); HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); //Write Image File Sto
0 2024-04-16
编程技术问答社区
将一个控制台分成两部分,用于两个输出
我正在创建一个控制台应用程序,我想拥有两个输出和一个输入.原因是使一个输出始终可见. This is the first output Text flows upwards just like a regular console application, however... --------- This is a second output This is placed at the bottom of the console // also input goes here. 我正在考虑称其为这样的东西 Console.Out.Writeline("This is the first output"); Console.Out.Writeline("Text flows upwards just like a regular console application, however..."); MyTextWriter.WriteLine("This is a
0 2024-04-16
编程技术问答社区
C#:FTP上传缓冲区大小
我已经走了FTP上传功能,但是我想问一些东西 这是缓冲区的大小,我将其设置为20kb是什么意思,如果我增加/减少它会有所作为? private void Upload(string filename) { FileInfo fi = new FileInfo(filename); FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://" + textBox1.Text + "/" + Path.GetFileName(filename)); ftp.Credentials = new NetworkCredential(textBox2.Text, textBox3.Text); ftp.Method = WebRequestMethods.Ftp.UploadFile; ftp.UseBinary = true;
0 2024-04-16
编程技术问答社区
进程不能访问文件,因为它正被另一个进程使用。
我正在使用C#的ASP.NET WebForms.在一页上,我单击提交以在服务器上创建文件. File.Create(Server.MapPath(ConfigurationManager.AppSettings["LandingPages"]) + landingPage.FriendlyName); 这可以正常工作,并按预期创建文件.但是,这样做后,它将其重定向到另一个页面,该页面读取刚刚创建的文件. var landingPageContent = File.ReadAllText(Server.MapPath(ConfigurationManager.AppSettings["LandingPages"]) + landingPage.FriendlyName); 那是我遇到此错误的时候. 该过程无法访问文件'c:\ code \ content \ cms \
0 2024-04-16
编程技术问答社区
应该定期调用GC.Collect()吗?
我最近发布了一篇有关日志文件读取器的文章log-file">删除内存错误归档日志文件 在我有机会尝试更简单的方法之前使用了它,例如gc.collect(). 如果在试图读取日志文件内容的同时丢弃了内存错误,则将其放置在第一次尝试/捕获显然,这是为了帮助我调试事实之后)我从昨晚的档案过程中得到了这种回应. Attempt Archive Take contents of current file with ReadFileString (this is my custom stream reader method I wrote which you can see in the original article) Taken contents of current file! In TRY/CATCH - Out of Memory Exception - Try GC.Collect() Memory used before collection: **4986715
0 2024-04-15
编程技术问答社区