C#:如何读取/复制文件并让其他进程读/写/删除前一个文件

问题描述 投票:0回答:1

有没有办法复制文件或其内容,并让其他进程在我的进程读取该文件时写入或删除该文件?我使用

Filestream
StreamReader
方法,但即使我将
FileShare
参数设置为 RW 和 Del,其他进程有时也会抛出有关 R/W 到文件的异常。这是异常I/O 130。我没有其他进程/程序的源代码,也无法更改其功能。

这应该正常工作,还是不行?

 private void auftragChange(object sender, string fileName)
 {
     UInt32 result;
     int okParts = -1;
     int iter = 0;
     string Auftrag = null;
     bool isUsed = true;
     string[] fLines;
     Thread.Sleep(3000);

     while (isUsed || iter < 11)
     {
         if (iter > 10)
         { 
             LogMessage($"CHYBA: Soubor je využíván jiným procesem: {fileName}"); 
             return; 
         }

         Thread.Sleep(500);
         isUsed = !isFileInUse(new FileInfo(fileName), iter) ? false : true;
         iter++;
     }

     using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite|FileShare.Delete))
     using (StreamReader sr = new StreamReader(fs))
     {
         fLines = sr.ReadToEnd().Split(new[] { '\n' });
     }
}

哦,方法

AuftragChange
是由FS Watcher调用的。 感谢您的意见/建议。

c# file copy streamreader read-write
1个回答
0
投票

也许您可以首先创建具有唯一名称的文件副本,然后您可以读取并移动它,而无需担心其他线程/进程删除或更改原始文件。

© www.soinside.com 2019 - 2024. All rights reserved.