如何将一个文件的内容写入另一个文件?

我需要使用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)); } 

  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"); 

您应该使用File.Copy除非您想要附加到第二个文件。

如果要追加,您仍然可以使用File类。

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

我们需要FileStream吗? 因为你可以很容易地用简单的文件类来做到这一点;

 using System.IO; string FileContent = File.ReadAllText(FilePathWhoseTextYouWantToCopy); File.WriteAllText(FilePathToWhomYouWantToPasteTheText,FileContent); 
 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); } } 

尝试这些方面的东西:

 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); } } 

请注意,这有点“骨架”,您应该根据您的应用需要进行修改。

使用System.IO FileStream类。

 [ComVisibleAttribute(true)] public class FileStream : Stream 

你检查过读者是否正在阅读所有数据? 此MSDN页面有一个示例,用于检查读取的所有数据:

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

另一种选择是您可能需要Flush输出缓冲区:

 writer.Flush(); 

如果您不热衷于使用File的读/写function,则可以尝试使用复制function

 Easiest will be : File.Copy(source_file_name, destination_file_name, true) 

true – >覆盖现有文件,没有“true”它将创建一个新文件。但是如果文件已经存在,它将抛出exception而没有“true”参数。