Ответ 1
Согласно http://msdn.microsoft.com/en-us/library/system.io.fileshare(v=vs.71).aspx
FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.None);
Я не уверен, что люди обычно подразумевают под "блокировкой" файла, но то, что я хочу, - это сделать эту вещь в файле, который приведет к появлению сообщения об ошибке "Указанный файл в использовании", когда я пытаюсь открыть это с другим приложением.
Я хочу сделать это, чтобы проверить свое приложение, чтобы увидеть, как он себя ведет, когда я пытаюсь открыть файл, находящийся в этом состоянии. Я пробовал это:
FileStream fs = null;
private void lockToolStripMenuItem_Click(object sender, EventArgs e)
{
fs = new FileStream(@"C:\Users\Juan Luis\Desktop\corte.txt", FileMode.Open);
}
private void unlockToolStripMenuItem_Click(object sender, EventArgs e)
{
fs.Close();
}
Но, по-видимому, он не делал то, что я ожидал, потому что я смог открыть файл с помощью Notepad, пока он был "заблокирован". Итак, как я могу заблокировать файл, чтобы он не мог быть открыт другим приложением для тестирования?
Согласно http://msdn.microsoft.com/en-us/library/system.io.fileshare(v=vs.71).aspx
FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.None);
Вам нужно передать FileShare
значение перечисления None
для открытия в конструкторе FileStream
перегрузки:
fs = new FileStream(@"C:\Users\Juan Luis\Desktop\corte.txt", FileMode.Open,
FileAccess.ReadWrite, FileShare.None);
Хотя FileShare.None, несомненно, является быстрым и простым решением для блокировки целого файла, вы можете заблокировать часть файла, используя FileStream.Lock()
public virtual void Lock(
long position,
long length
)
Parameters
position
Type: System.Int64
The beginning of the range to lock. The value of this parameter must be equal to or greater than zero (0).
length
Type: System.Int64
The range to be locked.
и, наоборот, вы можете использовать следующее, чтобы разблокировать файл: FileStream.Unlock()
public virtual void Unlock(
long position,
long length
)
Parameters
position
Type: System.Int64
The beginning of the range to unlock.
length
Type: System.Int64
The range to be unlocked.