Невозможно прочитать в C # XML-файл, открытый в Word - PullRequest
1 голос
/ 20 июня 2009

В настоящее время у меня есть приложение C #, которое читает файл XML. Но если этот XML-файл открывается словом, а затем мое приложение читает тот же XML-файл, я получаю исключение ввода-вывода. Все, что мне нужно сделать, это прочитать файл. Вот небольшой фрагмент кода;

public Object Load()
{
  try
  {
    using (FileStream fs = new FileStream(
       filePath,
       FileMode.Open,
       FileAccess.Read,
       FileShare.ReadWrite)) // Also tried, FileShare.Read and gets the same exception
    {
       return ((FooObject) new XmlSerializer(typeof(FooObject))
                .Deserialize(fs)) as Object;
    }
  }
  catch (Exception ex)
  {
    LogException(ex);
    return null;
  }
}

Ответы [ 3 ]

1 голос
/ 20 июня 2009

Word определенно заблокирует файл для записи, что предотвратит открытие вашего FileStream. Вы запрашиваете доступ ReadWrite, который завершится неудачей.

Полагаю, вы можете открыть его для чтения - просто измените строку на:

using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))

Обратите внимание на FileShare.Read против FileShare.ReadWrite. Я не верю, что Word открывает файлы для монопольного доступа, но блокирует запись.

0 голосов
/ 20 июня 2009

Я создал быстрое приложение WinForms на основе Документов MSDN для XmlSerializer.Deserialize (). Используя те же аргументы FileStream, что и у вас, у меня не было проблем с открытием файла, даже если он уже был открыт в Word. Считаете ли вы, что значение filePath может быть неправильным, то есть пытаться добавить что-то вроде следующего в Object_Load ():

if (!File.Exists(filePath))
{
    throw new FileNotFoundException("File does not exist", filePath);
}
0 голосов
/ 20 июня 2009

Вы ничего не можете сделать, если Word открыл файл исключительно, и я думаю, что это так.

Перехватите исключение и сообщите своему пользователю, что ему может потребоваться завершить работу Word, чтобы приложение работало должным образом.

редактировать

Word не открывает файл исключительно - убедитесь, что вы открываете файл для чтения onky - проверьте код из другого комментатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...