Нет, я не думаю, что есть что-то, что делает это.
Если два файла используют одну и ту же кодировку, и вам не нужно проверять, что они действительны, вы можете рассматривать их как двоичные файлы, например
using (Stream input = File.OpenRead("file1.txt"))
using (Stream output = new FileStream("file2.txt", FileMode.Append,
FileAccess.Write, FileShare.None))
{
input.CopyTo(output); // Using .NET 4
}
File.Delete("file1.txt");
Обратите внимание, что если file1.txt
содержит метку порядка байтов, вам следует сначала пропустить ее, чтобы избежать ее в середине file2.txt
.
Если вы не используете .NET 4, вы можете написать свой собственный эквивалент Stream.CopyTo
... даже с методом расширения, чтобы сделать передачу без проблем:
public static class StreamExtensions
{
public static void CopyTo(this Stream input, Stream output)
{
if (input == null)
{
throw new ArgumentNullException("input");
}
if (output == null)
{
throw new ArgumentNullException("output");
}
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
}