在内存中创建文件而不是文件系统

Ste*_*fan 8 .net c# file

我正在使用.NET库函数将文件上传到服务器,并将参数作为文件的路径.我想发送的数据很小,并在运行时构建.我可以将它保存到临时文件然后上传.

由于我的应用程序将部署在各种环境中,并且我不知道我是否能够可靠地创建临时文件,因此最好能够将路径传递到内存中的虚拟文件.

我无法改变图书馆; 我知道它在文件上执行以下操作:

LibraryUploadFunction(string filename) {
    fileName = Path.GetFullPath(fileName);
    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    ...
}
Run Code Online (Sandbox Code Playgroud)

是否可以避免将文件写入磁盘?

谢谢

编辑:

库调用是Webclient.UploadFile,正如答案中指出的那样,有许多可行的解决方法,包括使用替代库,其中有很多.

Jon*_*eet 10

不,你的图书馆在这方面基本上是不灵活的,因为它使用了它FileStream.

选项:

  • 使用ramdrive并在其上指定路径,以避免实际碰到磁盘
  • 根据其中文库来自,或者请求更改(如果它是封闭源代码),或者只是了改变,如果它是开源
  • 使用其他库.(这一个有什么特别之处?)


Ken*_*rey 6

如果库暴露了另一个接受a的方法Stream,你可以使用a MemoryStream.

如果它接受a SafeFileHandle,你可以使用a MemoryMappedFile.

否则,您必须对磁盘上的文件感到满意.