Tag:

下载管理器 – 限制下载速度

我需要为我的文件下载器应用程序实现下载速率限制,并且我已经查看了CodeProject中的ThrottledStream类,但这在我的情况下不起作用,因为我必须能够在下载期间更改限制,而不是刚刚开始。 这是我在后台线程中使用的下载方法的一部分: webResponse = (HttpWebResponse)webRequest.GetResponse(); responseStream = webResponse.GetResponseStream(); responseStream.ReadTimeout = 5000; downloadCache = new MemoryStream(this.MaxCacheSize); byte[] downloadBuffer = new byte[this.BufferSize]; int bytesSize = 0; CachedSize = 0; int receivedBufferCount = 0; while (true) { bytesSize = responseStream.Read(downloadBuffer, 0, downloadBuffer.Length); if (this.Status != DownloadStatus.Downloading || bytesSize == 0 || this.MaxCacheSize < CachedSize + bytesSize) { WriteCacheToFile(downloadCache, […]

使用Stream writer将特定字节写入textfile

好吧,我正在尝试将一些值和字符串写入文本文件。 但是这个文本文件必须包含2个字节 这些是我想在完成向其写入其他值后插入到我的文本文件中的2个字节: 我试过这个方法,但我不知道如何通过它写字节 using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8)) 在把我想要的字符串放到它上面后,我不知道如何将它们写入文本文件。

如何创建下载文本文件的SHA256哈希

我有一个项目,我得到一个文件的URL(例如www.documents.com/docName.txt),我想为该文件创建一个哈希。 我怎样才能做到这一点。 FileStream filestream; SHA256 mySHA256 = SHA256Managed.Create(); filestream = new FileStream(docUrl, FileMode.Open); filestream.Position = 0; byte[] hashValue = mySHA256.ComputeHash(filestream); Label2.Text = BitConverter.ToString(hashValue).Replace(“-“, String.Empty); filestream.Close(); 这是我必须创建哈希的代码。 但是看看它如何使用文件流它使用存储在硬盘驱动器上的文件(例如c:/documents/docName.txt)但是我需要它来处理文件的URL而不是驱动器上文件的路径。

如何锁定文件并在写入时避免读数

我的Web应用程序从文件系统返回一个文件。 这些文件是动态的,所以我无法知道它们中有多少个。 当该文件不存在时,应用程序将从数据库创建该文件。 我想避免两个不同的线程同时重新创建相同的文件,或者一个线程尝试返回该文件,而其他线程正在创建它。 此外,我不想锁定所有文件常见的元素。 因此,我应该在创建文件时锁定文件。 所以我想锁定一个文件,直到它的重新创建完成,如果其他线程试图访问它…它将不得不等待文件被解锁。 我一直在阅读关于FileStream.Lock,但我必须知道文件长度,它不会阻止其他线程尝试读取文件,因此它不适用于我的特定情况。 我一直在阅读有关FileShare.None的内容,但是如果其他线程/进程尝试访问该文件,它会抛出一个exception(哪个exception类型?)所以我应该开发一个“在故障时再试一次”,因为我我想避免exception生成……我不太喜欢这种方法,尽管可能没有更好的方法。 使用FileShare.None的方法或多或少会: static void Main(string[] args) { new Thread(new ThreadStart(WriteFile)).Start(); Thread.Sleep(1000); new Thread(new ThreadStart(ReadFile)).Start(); Console.ReadKey(true); } static void WriteFile() { using (FileStream fs = new FileStream(“lala.txt”, FileMode.Create, FileAccess.Write, FileShare.None)) using (StreamWriter sw = new StreamWriter(fs)) { Thread.Sleep(3000); sw.WriteLine(“trolololoooooooooo lolololo”); } } static void ReadFile() { Boolean readed […]

写入流时计算哈希值

我目前正在创建需要签名的加密文件格式。 为此,我需要计算我写入流的内容的哈希码。 在.net框架中有许多可以使用的哈希算法,并且它工作正常,但它需要我处理流三次。 byte[] content = new byte[] { 0, 1, 2, 3, 4, 5, 6 }; using (Stream fileStream = File.Open(“myfile.bin”, FileMode.Create)) { //Write content fileStream.Write(content, 0, content.Length); } byte[] hashValue = null; using (Stream fileStream = File.Open(“myfile.bin”, FileMode.Open)) { HashAlgorithm hash = SHA256.Create(); hashValue = hash.ComputeHash(fileStream); } using (Stream fileStream = File.Open(“myfile.bin”, FileMode.Append)) […]

FileStream.Flush()和FileStream.Flush(True)之间有什么区别?

MSDN说FileStream.Flush(True) “也清除了所有中间文件缓冲区。” “所有中间文件缓冲区”到底意味着什么?

以编程方式下载pdf

如何使用vb.NET或C#下载PDF并存储到磁盘? URL(PDF)在达到最终PDF之前会进行一些重新设置。 我试过以下但是当我尝试在本地打开时,PDF似乎已损坏, Dim PdfFile As FileStream = File.OpenWrite(saveTo) Dim PdfStream As MemoryStream = GetFileStream(pdfURL) PdfStream.WriteTo(PdfFile) PdfStream.Flush() PdfStream.Close() PdfFile.Flush() PdfFile.Close()

MemoryStream有一个线程写入它和另一个读取

这是我写入流然后使用1个线程从它读取的方式: System.IO.MemoryStream ms = new System.IO.MemoryStream(); // write to it ms.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7 }, 0, 7); // go to the begining ms.Seek(0, System.IO.SeekOrigin.Begin); // now read from it byte[] myBuffer = new byte[7]; ms.Read(myBuffer, 0, 7); 现在我想知道是否可以从一个线程写入内存流并从单独的线程中读取该流。

HttpWebRequest到c#中的web服务; 如何从响应流中获取数据?

我正在使用POST调用Web服务并接收2MB xml。 问题是我需要花费很多时间才能使用Stream中的数据。 响应似乎是在7秒之后,但是从响应流中读取内容(它是一个字符串)还需要10秒。 Stopwatch s = new Stopwatch(); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(MyUri); req.Method = “POST”; req.ContentType = “application/x-www-form-urlencoded”; req.ContentLength = Poststring.Length; s.Start(); StreamWriter swriter = new StreamWriter(req.GetRequestStream()); swriter.Write(Poststring); swriter.Close(); // Get the response. 7 sec HttpWebResponse response = (HttpWebResponse)req.GetResponse(); s.Stop(); Debug.WriteLine(“Talking to Web-Service: “+s.ElapsedMilliseconds); s.Reset(); // Get the stream containing content returned by the […]

TcpClient写入方法是否保证将数据传递给服务器?

我在客户端和服务器上都有一个单独的线程,它正在向/从套接字读取/写入数据。 我正在使用同步TcpClient im(如文档中所建议): https : //msdn.microsoft.com/cs-cz/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx 当连接关闭时.Read()/。Write()抛出exception。 是否意味着当.Write()方法没有将数据正确传递给另一方时,或者我是否需要实现自定义ACK逻辑 ? 我阅读了Socket和TcpClient类的文档,但没有一个描述这种情况。