Может ли кто-нибудь объяснить, как можно справиться с файлообменом?
Привет ребята,
-Итак, у меня есть приложение, которое будет регистрировать свои данные в abc.txt файл.
-Это приложение разделяется между 15-20 людьми, которые все они должны войти в систему
abc.txt досье тоже.
- У меня есть еще одно приложение, которое будет считывать данные из abc.txt файл для генерации некоторых
статистика об этом приложении
Я покажу вам некоторый код, как я справляюсь с этой штукой с файлшаригом.
в моем логе :
<appender name="TestAppender" type="log4net.Appender.RollingFileAppender"> <lockingmodel type="log4net.Appender.FileAppender+MinimalLock"/> <param name="File" value="c://temp//abc.txt" /> //temporary path for question. <param name="AppendToFile" value ="true"/> <encoding value="utf-8" /> <rollingStyle value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level [%thread] %type.%method %message%n" /> </layout> </appender>
в моем приложении, где я читаю данные из abc.txt для получения статистики :
string[] inputFilePaths = Directory.GetFiles("\\Path to directory where abc.txt is"); DateTime now = DateTime.Now; string[] thisMonth = inputFilePaths.Where(f => IsThisMonth(now, f)).ToArray(); using (StreamWriter outputStream = new StreamWriter("//path to a file where i want to write a motnh statistics.. abc.txt is included",false)) { foreach (var inputFilePath in inputFilePaths) { using (var inputStream = new StreamReader(inputFilePath)) { outputStream.Write(inputStream.ReadToEnd()); } } }
Метод, который я использую для вышеупомянутого :
private bool IsThisMonth(DateTime now, string path) { DateTime dt; if (!DateTime.TryParseExact(Path.GetExtension(path), ".yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { return true; } return dt.Year == now.Year && dt.Month == now.Month; }
теперь, когда дело доходит до этой линии :
using (var inputStream = new StreamReader(inputFilePath))
появится сообщение об ошибке : S
System.IO.IOException: 'The process cannot access the file '@.txt' because it is being used by another process.'
Что я уже пробовал:
Может ли кто-нибудь объяснить мне, как это работает и каково решение для этого?
Я обнаружил, что мне нужно включить файлообменник, но я понятия не имею, как это сделать.
Спасибо, что помогли мне, и если у вас есть какие-либо вопросы, не стесняйтесь спрашивать меня. Я все еще студент и должен научиться этим вещам, потому что они могут быть полезны в будущем.
TommoDotCommo
Вы проверяли, можете ли вы читать/писать/изменять файл с помощью текстового редактора или Проводника Windows? Это может быть проблема с разрешениями.
Sigmond Gatt
когда я использовал filestream, я делал FIleShare.readwrite, но теперь мне пришлось изменить вещи на streamwriter/reader, и эта проблема всплывает.. может быть, есть способ, которым я могу сделать файлообменник для streamwriter/reader.