【发布时间】:2018-10-25 07:40:28
【问题描述】:
我正在尝试将文件作为文件流读取,重命名文件,并将文件以文件流的形式发送到文档管理系统 (DMS)。
我在 StackOverflow 中看到很多关于在 c# 中重命名文件的问题,并且大部分回复都建议使用 File.Move 。
但是,我想知道如果不想实际重命名文件,我想在文件成为文件流后重命名为文件。我想探索 File.Move 以外的替代解决方案。
我尝试通过以下方法重命名文件,但是,文件流对象的名称属性似乎是只读的。
//This is my attempt
FileStream fs = new FileStream()
fs.Name = "new_name" //<-- not working
附加信息:
是的,我现在正在尝试修改一些没有适当文档的遗留代码,其中代码显然表明 DMS 的库有一个参数可以将文件流对象传递给它并上传。因此,我假设 DMS 确实读取了文件流的 Name 属性。
我之所以要直接更改文件流的名称是因为我想至少尽可能地更改,因为编写此代码的人已经走了,而且我也没有DMS的文档。另外,文件上传完成后会保存,这也是我不想改文件名的原因。
//This is how the actual program code looked like
FileStream input = File.OpenRead(uploadFile_path);
obj.Update();
obj.Fetch();
但是听了大家的建议后,我认为解决这个问题最安全的方法是:
- 创建文件的副本
- 重命名文件副本
- 上传文件的文件流
- 删除文件
【问题讨论】:
-
什么是DMS(对于初学者)
-
您的意思是
fs.Name在您的代码中的其他地方用于确定其在 DMS 中的名称吗? -
@TheGeneral 我猜是“文档管理系统”
-
@John 哦,我明白了!
-
具有潜在意外结果的不安全方式,并且在未来的 .NET 实现/其他 .NET 实现(例如 Mono)中会有所不同:使用反射来设置私有
_filename字段的值。安全方式:将其包装在带有所需 DMS 名称的对象中。另一种安全方法:将文件复制到具有新名称的临时位置,完成后将其删除。
标签: c# file filestream