我正在尝试将一个文件作为文件流读取,重命名该文件,并将该文件以文件流的形式发送到文档管理系统(DMS)。
我在StackOverflow中看到了很多问题,询问如何在c#中重命名文件,并且大多数答复建议使用File.Move。
但是,我想知道是否不想实际重命名文件,并且一旦文件成为文件流,我想重命名为file。我想探索File.Move以外的替代解决方案。
我尝试通过以下方法重命名文件,但是,看来文件流对象的name属性是只读的。
//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();
但是,在听完您所有的建议之后,我认为解决此问题的最安全方法是:
答案 0 :(得分:2)
如果您的文档管理系统(显然是DMS)使用的是FileStream.Name Property
(至少可以说很奇怪),那么您就走运了,那么就无法(轻松)进行更改。
例如
php worker.php
或者因为这是stackoverflow,您可以使用反射设置名称
注意 :我不建议这样做,这可能会随.net的未来版本而改变,谁知道您可能遇到的问题,但是确实如此更改Name属性的工作
{
echo some information on the environment
echo some checks
# etc....
} 2>&1 | tee "logdir/logfile.log"
{
rsync -rtpgov /some/folder/ some/other/folder
} 2>&1 | tee "logdir/rsync.log"
{
tar -xf some/other/tar/file.tar -C some/other/folder2
tar -xf some/other/tar/file.tar -C some/other/folder3
tar -xf some/other/tar/file.tar -C some/other/folder4
# etc...
echo some finishing checks
} 2>&1 | tee -a "logdir/logfile.log"