none
檔案被鎖定後如何讀取? RRS feed

  • 問題

  • 現在我有一個程式(代號:A)是要去讀取另一個程式(代號:B)所產生出來的文字檔資料…
    所以現在會遇到的問題就是…當B正在產生將資料寫入文字檔時會把此檔案鎖定住,所以A程式要去讀取此文字檔就會出現錯誤了…

    我的問題所在:
    能否就算被鎖定也能讀出所要的資料呢?

    ps.程式B是別人寫好的程式,故無法去更動。所以目前只能朝往程式A來想解決方法。
    2010年1月15日 上午 01:31

解答

  • 下列是 C# 程式碼,作者說是可以讀被鎖住的文字檔,但有沒有用不一定,要看每個人的環境:

    FileStream logFileStream = new FileStream("c:\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    StreamReader logFileReader = new StreamReader(logFileStream);
    
    while (!logFileReader.EndOfStream)
    {
        string line = logFileReader.ReadLine();
        // Your code here
    }
    
    // Clean up
    logFileReader.Close();
    logFileStream.Close();
    

    來源:http://www.geekzilla.co.uk/ViewD21B312F-242A-4038-9E9B-AE6AAB53DAE0.htm

    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 justinwu 2010年1月15日 上午 02:08
    2010年1月15日 上午 01:57
    版主

所有回覆

  • 下列是 C# 程式碼,作者說是可以讀被鎖住的文字檔,但有沒有用不一定,要看每個人的環境:

    FileStream logFileStream = new FileStream("c:\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    StreamReader logFileReader = new StreamReader(logFileStream);
    
    while (!logFileReader.EndOfStream)
    {
        string line = logFileReader.ReadLine();
        // Your code here
    }
    
    // Clean up
    logFileReader.Close();
    logFileStream.Close();
    

    來源:http://www.geekzilla.co.uk/ViewD21B312F-242A-4038-9E9B-AE6AAB53DAE0.htm

    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 justinwu 2010年1月15日 上午 02:08
    2010年1月15日 上午 01:57
    版主
  • 感謝小朱大大的指教…
    現在已經可以進行讀取了…不會出現錯誤了…感謝感謝…
    看來參數設定還有很多東西可以運用…看來要多讀一些文件才對了…

    2010年1月15日 上午 02:13
  • 重點應該是 B 是怎樣鎖定,要是 B 完全沒有分享讀取的權限,任何程式都開不了。
    A 只能以最小唯讀分享權限讀取,如果這樣都讀不了,B 就是獨佔鎖定。

    這類討論本版已經有好幾次了,用 google 指定在本版搜尋會比較方便找舊文。
    http://www.google.com.tw/search?hl=zh-TW&source=hp&q=FileShare+site%3Ahttp%3A%2F%2Fsocial.msdn.microsoft.com%2FForums%2Fzh-TW%2F232%2F&meta=&aq=f


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年1月16日 上午 01:41