Tag: streamreader

你如何在Python中发送HTTP Get Web Request?

我无法将数据发送到网站并在Python中获得响应。 我曾经见过类似的问题,但是他们没有一个能够实现我的目标。 如果你可以阅读这个,你可以看到我正在尝试在Python(这是它在C#中) static void Request(Uri selectedUri) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(selectedUri); request.ServicePoint.BindIPEndPointDelegate = BindIPEndPointCallback; request.Method = "GET"; request.Timeout = (int)Timeout.TotalMilliseconds; request.ReadWriteTimeout = (int)Timeout.TotalMilliseconds; request.CachePolicy = CachePolicy; request.UserAgent = UserAgent; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader responseReader = new StreamReader(response.GetResponseStream())) { string responseText = responseReader.ReadToEnd(); File.WriteAllText(UrlFileName, responseText.Trim(), Encoding.ASCII); } } } 在上面的代码中,build立了一个Http请求,将响应stream中发现的所有内容都发送给在UrlFileName中find的url。 这里是我尝试在Python中重新创build它: […]

C#将文件转换成Base64String并返回

标题说明了一切: 我读了tar.gz这样的档案 将文件分解成一个字节数组 将这些字节转换为Base64string 将该Base64string转换回字节数组 把这些字节写回新的tar.gz文件 我可以确认两个文件大小相同(下面的方法返回true),但我不能再提取复制版本。 我错过了什么吗? Boolean MyMethod(){ using (StreamReader sr = new StreamReader("C:\…\file.tar.gz")) { String AsString = sr.ReadToEnd(); byte[] AsBytes = new byte[AsString.Length]; Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length); String AsBase64String = Convert.ToBase64String(AsBytes); byte[] tempBytes = Convert.FromBase64String(AsBase64String); File.WriteAllBytes(@"C:\…\file_copy.tar.gz", tempBytes); } FileInfo orig = new FileInfo("C:\…\file.tar.gz"); FileInfo copy = new FileInfo("C:\…\file_copy.tar.gz"); // Confirm that […]

一个优雅的方式来消费(BinaryReader的所有字节)?

用BinaryReader模拟StreamReader.ReadToEnd方法有没有优雅? 也许把所有的字节放入一个字节数组? 我这样做: read1.ReadBytes((int)read1.BaseStream.Length); …但是一定有更好的办法。

我应该为stream对象调用Close()还是Dispose()?

Stream , StreamReader , StreamWriter等类实现了IDisposable接口。 这意味着,我们可以在这些类的对象上调用Dispose()方法。 他们还定义了一个名为Close()的public方法。 现在,让我感到困惑的是,一旦我完成了对象,我该怎么称呼? 如果我同时打电话呢? 我目前的代码是这样的: using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { using (StreamWriter writer = new StreamWriter(filename)) { int chunkSize = 1024; while (!reader.EndOfStream) { char[] buffer = new char[chunkSize]; int count = reader.Read(buffer, 0, chunkSize); if (count != 0) { writer.Write(buffer, 0, […]

如何查找和replaceC#文件中的文本

我的代码到目前为止 StreamReader reading = File.OpenText("test.txt"); string str; while ((str = reading.ReadLine())!=null) { if (str.Contains("some text")) { StreamWriter write = new StreamWriter("test.txt"); } } 我知道如何find文本,但我不知道如何用自己的文件replace文件中的文本。

在C#中同时读写一个文件

我有一个包含数据的文件,我想监视更改,以及添加我自己的更改。 想像“尾巴-f foo.txt”。 基于这个线程 ,它看起来像我应该创build一个文件stream,并将其传递给作家和读者。 但是,当读者到达原始文件的末尾时,它无法看到自己写的更新。 我知道这似乎是一个奇怪的情况…更多的是一个实验,看看是否可以做到。 这是我尝试的例子: foo.txt的: 一个 b C d Ë F string test = "foo.txt"; System.IO.FileStream fs = new System.IO.FileStream(test, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite); var sw = new System.IO.StreamWriter(fs); var sr = new System.IO.StreamReader(fs); var res = sr.ReadLine(); res = sr.ReadLine(); sw.WriteLine("g"); sw.Flush(); res = sr.ReadLine(); res = sr.ReadLine(); sw.WriteLine("h"); sw.Flush(); sw.WriteLine("i"); sw.Flush(); […]

configurationStreamReader是否closuresstream?

我正在发送一个stream来写入方法,在这些方法中,我正在使用二进制读取器/ wier。 当读者/写者得到处置时,无论是通过using还是只是当它没有被引用时,stream是否closures? 我会发送一个BinaryReader / Writer,但我也使用StreamReader(也许我应该绕过,我只用于GetLine和ReadLine)。 如果每次作家/读者closures时closuresstream,这是相当麻烦的。

内存泄漏使用StreamReader和XmlSerializer

我一直在谷歌search过去的几个小时,尝试不同的东西,但似乎无法在这个底部…. 当我运行这个代码时,内存使用量不断增长。 while (true) { try { foreach (string sym in stringlist) { StreamReader r = new StreamReader(@"C:\Program Files\" + sym + ".xml"); XmlSerializer xml = new XmlSerializer(typeof(XMLObj), new XmlRootAttribute("rootNode")); XMLObj obj = (XMLObj)xml.Deserialize(r); obj.Dispose(); r.Dispose(); r.Close(); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } Thread.Sleep(1000); Console.Clear(); } XMLObj是一个自定义对象 [Serializable()] public class XMLObj: IDisposable { [XmlElement("block")] […]

用C#中的stream读取大文本文件

我有一个可爱的任务,即如何处理大文件被加载到我们的应用程序的脚本编辑器(这就像我们的内部产品快速macros的VBA )。 大多数文件大约300-400 KB这是很好的加载。 但是当他们超过100 MB时,这个过程很难(如你所期望的)。 会发生什么是该文件被读取并推入一个RichTextBox,然后导航 – 不要太担心这个部分。 编写初始代码的开发人员只需使用StreamReader即可 [Reader].ReadToEnd() 这可能需要很长时间才能完成。 我的任务是打破这一点的代码,阅读成块缓冲区,并显示一个进度条,并取消它的选项。 一些假设: 大多数文件将是30-40 MB 文件的内容是文本(不是二进制),有些是Unix格式,有些是DOS。 一旦内容被检索,我们计算出使用了什么终止符。 一旦加载了在richtextbox中渲染所需的时间,就不会有人担心。 这只是文本的初始负载。 现在提问: 我可以简单地使用StreamReader,然后检查Length属性(如ProgressMax),并发出一个读取设置的缓冲区大小,并在while循环WHILST内循环遍历一个后台工作,所以它不会阻止主UI线程? 然后在完成之后将stringbuilder返回到主线程。 内容将会转到一个StringBuilder。 如果长度可用,我可以初始化StringBuilder与stream的大小? 这些(在你的专业意见)好主意? 过去我曾经从Streams中读过一些内容,因为它总是会丢失最后的几个字节,但是如果是这样的话,我会问另外一个问题。