Hi,
一個簡單卻想不明白的問題,請教大家。
C# 寫了一個console程式,如下打開一個.txt 檔案,讀取一行。
using (StreamReader sr = new StreamReader(path))
{
sr.ReadLine();
}
Visual Studio單步跟蹤,執行到ReadLine這一行時,在 檔案管理器 中手工打開path對應的txt檔案,修改另存時,竟然保存不了!
按說,C#中這是reader,應該是只讀打開,為什么另外的行程(如此處實驗用的 檔案管理器),無法修改保存呢?
如果在C#代碼中,要實作一個純粹“只讀"打開的文本檔案,難道new StreamReader(path)方式不可以?那要怎么做呢?
謝謝。預祝程式員同學們新春愉快!~~~
uj5u.com熱心網友回復:
是的,默認的FileShare設定為FileShare.Read,可以用StreamReader(Stream)建構式
StreamReader sr = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
uj5u.com熱心網友回復:
你們回答問題從來不要別人問的什么么
uj5u.com熱心網友回復:
你以直讀打開雖然你不能寫,但是如果你不把共享權限設定為讀寫,那別人也不能寫。所以你打開檔案還需要設定共享權限位讀寫,別的程式才能進行寫操作uj5u.com熱心網友回復:
你都已經只讀了,還讓別人怎么寫。。。。嗷,知道了,你理解偏差了,不是說你自己只讀,這個只讀是對檔案而言的,你自己只讀不只讀沒有什么太大意義,自己編碼控制就可以了不是嗎
uj5u.com熱心網友回復:
這個能達到你要的效果,理解不了就無需理解,有的人天生不適合做程式員。uj5u.com熱心網友回復:
FileShare.ReadWrite指當前程式可以寫、讀多執行緒下讀取一個txt檔案,需要加鎖吧,更何況,你這是跨行程,檔案管理器和你的程式是兩個行程
有些檔案,如mdb,是因為有DBMS在“維護”,才支撐并發的
uj5u.com熱心網友回復:
StreamReader sr = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))這句有時候也會無法讀取,我遇到過,不 知道為什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/73215.html
標籤:C#
