Подтвердить что ты не робот

Как написать содержимое одного файла в другой файл?

Мне нужно записать содержимое файла в другой файл, используя методы File.OpenRead и File.OpenWrite. Я не могу понять, как это сделать.

Как я могу изменить следующий код для работы для меня.

using (FileStream stream = File.OpenRead("C:\\file1.txt"))
using (FileStream writeStream = File.OpenWrite("D:\\file2.txt"))
{
       BinaryReader reader = new BinaryReader(stream);
       BinaryWriter writer = new BinaryWriter(writeStream);
       writer.Write(reader.ReadBytes(stream.Length));
}
4b9b3361

Ответ 1

    using (FileStream stream = File.OpenRead("C:\\file1.txt"))
    using (FileStream writeStream = File.OpenWrite("D:\\file2.txt"))
    {
        BinaryReader reader = new BinaryReader(stream);
        BinaryWriter writer = new BinaryWriter(writeStream);

        // create a buffer to hold the bytes 
        byte[] buffer = new Byte[1024];
        int bytesRead;

        // while the read method returns bytes
        // keep writing them to the output stream
        while ((bytesRead =
                stream.Read(buffer, 0, 1024)) > 0)
        {
            writeStream.Write(buffer, 0, bytesRead);
        }
    }

Просто удивляйся, почему бы не использовать это:

File.Copy("C:\\file1.txt", "D:\\file2.txt");

Ответ 2

Вы должны использовать File.Copy, если вы не хотите добавлять второй файл.

Если вы хотите добавить, вы все равно можете использовать класс File.

string content = File.ReadAllText("C:\\file1.txt");
File.AppendAllText("D:\\file2.txt",content);

Ответ 3

Попробуйте что-то в этом направлении:

using (FileStream input = File.OpenRead(pathToInputFile),
    output = File.OpenWrite(pathToOutputFile))
{
    int read = -1;
    byte[] buffer = new byte[4096];
    while (read != 0)
    {
        read = input.Read(buffer, 0, buffer.Length);
        output.Write(buffer, 0, read);
    }
}

Обратите внимание, что это несколько "скелетный", и вы должны изменить его, как требуется для его применения.

Ответ 4

Нужно ли нам FileStream? Поскольку вы можете сделать это очень легко с помощью простого класса файлов, например:

using System.IO;
string FileContent = File.ReadAllText(FilePathWhoseTextYouWantToCopy);
File.WriteAllText(FilePathToWhomYouWantToPasteTheText,FileContent);

Ответ 5

using (var inputStream = File.OpenRead(@"C:\file1.txt"))
{
    using (var outputStream = File.OpenWrite(@"D:\file2.txt"))
    {
        int bufferLength = 128;
        byte[] buffer = new byte[bufferLength];
        int bytesRead = 0;

        do
        {
            bytesRead = inputStream.Read(buffer, 0, bufferLength);
            outputStream.Write(buffer, 0, bytesRead);
        }
        while (bytesRead != 0);
    }
}

Ответ 6

Используйте класс FileStream, от System.IO.

[ComVisibleAttribute(true)]
public class FileStream : Stream

Ответ 7

Вы проверили, читает ли читатель все данные? Эта страница MSDN содержит пример, который проверяет все данные:

    byte[] verifyArray = binReader.ReadBytes(arrayLength);
    if(verifyArray.Length != arrayLength)
    {
        Console.WriteLine("Error reading the data.");
        return;
    }

Другой альтернативой является то, что вы, вероятно, должны Flush выходной буфер:

writer.Flush();

Ответ 8

Если вы не любите использовать функцию чтения/записи файла, лучше попробовать использовать функцию копирования

Easiest will be : 

      File.Copy(source_file_name, destination_file_name, true)

true → для перезаписывания существующего файла без "истины" он создаст новый файл. Но если файл уже существует, он будет генерировать исключение без аргумента "true".