2017-06-07 6 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

同じファイルから2つのストリームを作成するため、動作しません。あなたは何をしようとしているのですか ?もう少し説明できますか?あなたはファイルを開いて同じファイルに同じものを書き込もうとしているようですね??? – Thomas

+0

実際に私はファイルを最初に読んでいるので、ファイル内でいくつかの変更を行う必要があります。ここではイメージファイルを表示しましたが、.txt、.doc、.jobファイルを使用する必要があります。ファイルを読み込んだ後、それを書き込んで、同じ場所に保存/更新する必要があります。 –

答えて

0

この投稿は読み、単一のストリームを使用してファイルに書き込むために、両方の方法について説明します。

How to both read and write a file in C#

は、前の誤った実行からまだ開いているファイルを有することができることを検討してください。 Sysinternals Process MonitorまたはUnlockerのようなツールを使用して、別のインスタンスによって開かれていないことを確認します。プロセスモニタを使用する方法

両方 source

http://www.manuelmeyer.net/2013/09/tooltips-unlocking-files-with-sysinternals-process-monitor/

0

destは、同じファイルを参照しています。最初のインスタンス(source)では、それを排他的に(つまり共有しないで)開きます。

2番目のインスタンス(dest)では、最初に開いたファイルを作成して共有することができます。

すでにsourceが開かれているので、destを使用してその上に上書きすることはできません。

は、私はあなたが望む本当にすることができるものを考えてはdestsourceためpathパラメータに異なるようにするためにあなたが本質的に同じで、同じファイルに同じデータを再作成しようとしているので、pathパラメータを持つことです現在位置しています。

関連する問題