2017-06-07 66 views
-1

這裏的進程無法訪問該文件是我的代碼: enter image description hereC#獲取運行時錯誤:因爲它正被另一個進程使用

using System.IO; 

namespace Randoms 
{ 
    public class Program 
    { 
     public static void Main() 
     { 
      byte[] buffer = new byte[10240]; // buffer size 
      string path = @"C:\Users\RAHUL\Desktop\file.txt"; 
      using (FileStream source = new FileStream(path, FileMode.Open, FileAccess.Read)) 
      { 
       long fileLength = source.Length; 
       using (FileStream dest = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) 
       { 
        long totalBytes = 0; 
        int currentBlockSize = 0; 

        while ((currentBlockSize = source.Read(buffer, 0, buffer.Length)) > 0) 
        { 
         totalBytes += currentBlockSize; 
         double percentage = (double)totalBytes * 100.0/fileLength; 
         dest.Write(buffer, 0, currentBlockSize);             
        } 
       } 
      } 
     } 
    } 
} 

請檢查圖像,其顯示了我getting.I錯誤試圖多次更改FileAccess,但沒有得到任何好運。

+2

你從同一個文件創建兩個流,所以它不起作用。你想做什麼 ?你能多解釋一下嗎?看來你打開一個文件讀取它,並嘗試寫入完全相同的東西到同一個文件? – Thomas

+0

其實我正在閱讀文件,然後我需要在文件中執行一些更改。在這裏我已經顯示了圖像文件,但我必須使用.txt,.doc,.job文件。讀完文件後,我需要寫入文件,並最終在同一位置保存/更新。 –

回答

0

兩個sourcedest引用的是同一個文件。在第一種情況下(source),您專門打開它(即不共享)。

在第二個實例(dest)中,您現在想要創建在第一個實例中打開但允許共享的文件。

由於source已經打開並且正在使用中,因此無法使用dest來覆蓋頂部。

我想你可能會真正想要的是有path參數爲dest是不同的,以path參數爲source,因爲你基本上是試圖在同一重新寫相同的數據在同一個文件現在的位置。

相關問題