wpf2009. 9. 23. 15:40

FileInfo fi = new FileInfo(path);

fi.Open(FileMode.Open, FileAccess.ReadWriteFileShare.Read);

 

이렇게 파일을 열었다고 하면,

파일을 읽기/쓰기 모드로 열고 파일 공유를 읽기로만 설정한 경우입니다.

 

이렇게 열린 파일을 다른 프로세스에서 읽을려면,

 

FileInfo fi = new FileInfo(@"D:test.txt");

fi.Open(FileMode.Open, FileAccess.Read ,FileShare.ReadWrite);

로 여시면 됩니다.

 

FileShare의 기본값은 Read 이므로 반드시 명시해 주셔야 합니다. 

 

이미 이전 프로세스에서 읽기/쓰기 모드로 열려 있는데

다음 프로세스에서 읽기 공유만 허용한다는 설정이 안 맞는 것이 됩니다.

 

FileMode.Open, (1)FileAccess.ReadWriteFileShare.Read

FileMode.Open, FileAccess.Read ,(1)FileShare.ReadWrite

*(1)이 대응 되어야 함

 

다음은 간단한 예제 입니다.

 

private void btn_Write_Click(object sender, EventArgs e)
{
            if (txt_path.Text.Trim().Length > 0)
            {
                fs = new System.IO.FileStream(txt_path.Text, FileMode.Append, FileAccess.Write, FileShare.Read);
                                
                byte[] buf = Encoding.Default.GetBytes(txt_Write.Text);
                
                fs.Write(buf, 0, buf.Length);
                
                fs.Flush();
            }
}

 

 private void btn_Read_Click(object sender, EventArgs e)
 {
            if (txt_path.Text.Trim().Length > 0)
            { 
                System.IO.FileStream tfs = File.Open(txt_path.Text, FileMode.Open, FileAccess.Read, FileShare.Write);
                
                sr = new StreamReader(tfs, Encoding.Default);
                
                txt_read.Text = sr.ReadToEnd();
            }
   }

Posted by 동동(이재동)