Tag: filestream

为什么我的Stream不可读?

这是我的问题的续集,关于修剪日志文件中的脂肪。 我有这个代码: private readonly FileStream _fileStream; private readonly StreamWriter _streamWriter; . . . const int MAX_LINES_DESIRED = 1000; string uriPath = GetExecutionFolder() + “\\Application.log”; string localPath = new Uri(uriPath).LocalPath; if (!File.Exists(localPath)) { File.Create(localPath); } _fileStream = File.OpenWrite(localPath); // First, remove the earliest lines from the file if it’s grown too much StreamReader reader = new […]

如何在webapi上传中获取Multipart文件的流?

我需要使用Stream(Azure Blobstorage)上传文件,并且无法找到如何从对象本身获取流。 见下面的代码。 我是WebAPI的新手,并使用了一些示例。 我正在获取文件和filedata,但我的方法上传它并不正确。 因此,我需要将其转换或转换为普通Stream,此刻看起来有点难:) 我知道我需要使用ReadAsStreamAsync().Result以某种方式,但它在foreach循环中崩溃,因为我得到两个provider.Contents(第一个似乎正确,第二个没有)。 [System.Web.Http.HttpPost] public async Task Upload() { if (!Request.Content.IsMimeMultipartContent()) { this.Request.CreateResponse(HttpStatusCode.UnsupportedMediaType); } var provider = GetMultipartProvider(); var result = await Request.Content.ReadAsMultipartAsync(provider); // On upload, files are given a generic name like “BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5” // so this is how you can get the original file name var originalFileName = GetDeserializedFileName(result.FileData.First()); // […]

如何在.Net 1.1中的FileStream上实现IDisposable

这可能看起来像一个问题,但我正在看这个,因为我听到有人声称你必须在FileStream上调用Close(),即使它在一个使用块中(并且他们有代码调用Close())就在街区尽头)。 我知道Close()意味着调用Dispose(),但我认为我看起来更深,因为这是.Net 1.1代码,我的大部分经验都是2.0。 让我印象深刻的是,FileStream的MSDN文档为.Net 2.0启用了Dispose()和Dispose(bool),但只为.Net 1.1启用了Dispose(bool)。 我认为这可能是一个疏忽,所以我使用Reflector来查看一个程序集 – 我也看到Dispose(bool),但没有Dispose()。 它是否正确? 如果是这样,这里的故事是什么? FileStream在一个使用块中工作 – 我认为它必须实现IDisposable,据我所知,它只声明Dispose()。 是否有一些编译器魔法正在进行,或者我错过了隐藏的Dispose()实现(可能是调用Dispose(true)或Dispose(false)?) 最后(没有双关语),你能否确认在使用块中使用FileStream的范围将在.Net 1.1中的范围出口处关闭流? [编辑] 只是为了澄清,这是C#代码。 我知道VB.Net在.Net 2.0之前没有得到using语句,但我的理解是C#在1.1中有它(我的1.1代码在这里有它并编译)

通过查看其二进制内容以编程方式找到文件类型。 可能?

我有一个ac#组件,它将收到以下类型的文件.doc,.pdf,.xls,.rtf 这些将由调用siebel传统应用程序作为文件流发送。 所以… [LegacyApp] >> {二进制文件流} >> [组件] 遗留应用程序是一个黑盒子,无法修改以告诉组件它正在发送什么文件类型(doc,pdf,xls)。 组件需要读取此二进制流并在具有正确扩展名的文件系统上创建文件。 有任何想法吗? 谢谢你的时间。

Http MultipartFormDataContent

我被要求在C#中执行以下操作: /** * 1. Create a MultipartPostMethod * 2. Construct the web URL to connect to the SDP Server * 3. Add the filename to be attached as a parameter to the MultipartPostMethod with parameter name “filename” * 4. Execute the MultipartPostMethod * 5. Receive and process the response as required * / 我写了一些没有错误的代码,但是没有附加文件。 有人可以查看我的C#代码,看看我是否错误地编写了代码? […]

使用c#将结构中的字节写入文件

大家,早安! 我在这里遇到了一个新问题。 我必须写下一个来自我在sistem中声明的结构的数据。 我创建的结构只有两个字段,我用它来稍后将其转换为字节。 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct MyStructData { public short Id; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string Name; } 我用以下代码转换这个结构的字节: private byte[] getBytes(MyStructData aux) { int length = Marshal.SizeOf(aux); IntPtr ptr = Marshal.AllocHGlobal(length); byte[] myBuffer = new byte[length]; Marshal.StructureToPtr(aux, ptr, true); Marshal.Copy(ptr, myBuffer, 0, length); Marshal.FreeHGlobal(ptr); return myBuffer; […]

如何使用临时文件流式传输mp3文件?

我正在使用Mp3流光。 要从url流式传输mp3文件,我想使用临时文件。 但是尝试读取和写入相同的文件会因File.ReadAllBytes而抛出IOException ,因为该文件正在使用中。 我怎样才能解决这个问题? long pos = 0; string path = pathtothetempfile; MemoryStream ms = new MemoryStream(); FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); do { bytesRead = responseStream.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, bytesRead); fs.Flush(); byte[] tempBuffer = File.ReadAllBytes(path); pos = ms.Position; ms = new MemoryStream(tempBuffer); ms.Position = pos; frame = Mp3Frame.LoadFromStream(ms); //….codes…. […]

从WCT Restful服务中使用FileStream

我创建了一个WCF Restful服务,其代码如下: 接口: [ServiceContract] public interface ISIGService { [OperationContract] [WebInvoke(Method = “GET”, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = “GetMultimedia/{id}”)] Stream GetMultimedia(string id); } 实现此服务的代码: public Stream GetMultimedia(string id) { string filePath = MultimediaBLL.GetFilePath(int.Parse(id)); if (string.IsNullOrEmpty(filePath)) return null; try { FileStream multimediaFileStream = File.OpenRead(filePath); return multimediaFileStream; } catch (Exception ex) { Console.WriteLine(“Not able to […]

二进制读写器同时打开?

我正在编写处理使用哈希值的文件的代码。 我需要读取一个块,然后散列它,然后写入它,然后读取另一个块等。 换句话说,我需要做很多阅读和写作。 我确信这很简单,但我只是想由专业人士运行它… 做以下事情是可能的,也是可以接受的: BinaryReader br = new BinaryReader (File.OpenRead(path)); BinaryWriter bw = new BinaryWriter (File.OpenWrite(path)); br.dostuff(); bw.dostuff(); 我记得在尝试打开和写入文件时遇到某种冲突的文件流错误,我不知道我做了什么才能得到它。 问题是两个文件流吗? 我可以有一个流来读取和写入吗?

读取文件,并监控新行

我正在寻找创建一个控制器应用程序,它将读取一个文件,并监视每一个新行,因为它每隔0.5秒被另一个进程写入。 如何在使用.NET 4.5的控制台应用程序中实现这一目标?