如何将一个文件的内容写入另一个文件?
我需要使用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”参数。