如何修复 C# 中的 System.IO 异常。试图将多个 CSV 文件整理成 1 个文件
How to fix System.IO Exception in C#. Attempting to collate multiple CSV files into 1 file
我不断收到以下异常:
System.IO.IOException
HResult=0x80070020
Message=The process cannot access the file 'C:\DIPV3\result.csv' because it is being used by another process.
是否有更好的方法结合使用 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)));
问题是您正试图写入您正在读取的同一个文件(您的 output
文件在 sourceDir 中并且匹配 "*.csv"
过滤器。
一些可能的解决方案是:
1。 Select所有文件除了输出文件供阅读:
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);
我不断收到以下异常:
System.IO.IOException HResult=0x80070020 Message=The process cannot access the file 'C:\DIPV3\result.csv' because it is being used by another process.
是否有更好的方法结合使用 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)));
问题是您正试图写入您正在读取的同一个文件(您的 output
文件在 sourceDir 中并且匹配 "*.csv"
过滤器。
一些可能的解决方案是:
1。 Select所有文件除了输出文件供阅读:
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);