Chciałbym w swojej aplikacji wczytać plik XML. Robię tak:
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilePath);
To normalnie działa jeśli plik XML nie jest otwarty w innym programie.
Jeśli jednak ten plik XML w momencie wywołania doc.Load()
jest otwarty w LibreOffice Calc (bo to jest plik typu *.fods
- czyli *.ods
bez kompresji), to otrzymuję błąd:
IOException: Sharing violation on path E:\GitHub\...\file.fods
Natomiast inna aplikacja (Geany oraz komenda type file.fods
w terminalu) nie ma problemu, żeby wczytać ten plik w postaci tekstowej, nawet jeśli plik jest tak samo, aktualnie otwarty w LibreOffice Calc.
Czy jest w C# jakiś inny sposób wczytania pliku *.fods
, bez konieczności zamykania tego pliku w LibreOffice Calc?
Próbowałem (z tym samym skutkiem):
using (FileStream xmlFile = File.Open(xmlFilePath, FileMode.Open, FileAccess.Read))
{
doc.Load(xmlFile);
}
oraz
doc.Load(File.ReadAllText(xmlFilePath));
Tak jakby wszystkie metody wczytywania tekstu w C# nie mogły się wyluzować i pozwolić na odczyt pliku otwartego w innej aplikacji...