Как исправить исключения System.IO в C #. Попытка упорядочить несколько файлов CSV в 1 файл - PullRequest
0 голосов
/ 30 апреля 2019

Я получаю следующее исключение:

System.IO.IOException HResult = 0x80070020 Сообщение = процесс не может получить доступ к файлу 'C: \ DIPV3 \ result.csv', поскольку он используется другим процессом.

Есть ли лучший способ попробовать это решение, используя комбинацию Streams или Linq? Код ниже записывает файл частично, но затем выдает исключение, указанное выше.

string sourceDir = @"C:\DIPV3";
string output = @"C:\DIPV3\result.csv";

//Thread.Sleep(5000);
File.WriteAllLines(output, 
    Directory.EnumerateFiles(sourceDir, @"*.csv").SelectMany(file => File.ReadLines(file)));

1 Ответ

2 голосов
/ 30 апреля 2019

Проблема в том, что вы пытаетесь записать в тот же файл, из которого читаете (ваш файл output находится в sourceDir и соответствует фильтру "*.csv".

Возможно несколькоРешения:

1. Выберите все файлы , кроме выходного файла для чтения:

File.WriteAllLines(output, Directory.EnumerateFiles(sourceDir, @"*.csv")
    .Where(path => !path.Equals(output, StringComparison.OrdinalIgnoreCase))
    .SelectMany(File.ReadLines));

2. Поместите ваш выходной файл вдругая папка:

string output = @"C:\DIPV3\restuls\result.csv";

3. Сначала прочитайте все содержимое, затем напишите результат:

IEnumerable<string> contents = Directory.EnumerateFiles(sourceDir, @"*.csv")
    .SelectMany(File.ReadLines).ToList();

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