我需要使用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));
}
答案 0 :(得分:28)
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");
答案 1 :(得分:5)
除非您想要附加到第二个文件,否则您应该使用File.Copy
。
如果你想追加你仍然可以使用File类。
string content = File.ReadAllText("C:\\file1.txt");
File.AppendAllText("D:\\file2.txt",content);
答案 2 :(得分:1)
尝试以下几点:
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);
}
}
请注意,这有些“骨架”,您应该根据应用需要进行修改。
答案 3 :(得分:1)
我们有必要使用FileStream吗?因为您可以使用简单的文件类(如
)轻松完成此操作using System.IO;
string FileContent = File.ReadAllText(FilePathWhoseTextYouWantToCopy);
File.WriteAllText(FilePathToWhomYouWantToPasteTheText,FileContent);
答案 4 :(得分:1)
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);
}
}
答案 5 :(得分:0)
使用FileStream
中的System.IO
课程。
[ComVisibleAttribute(true)]
public class FileStream : Stream
答案 6 :(得分:0)
您是否检查过读者正在阅读所有数据? This MSDN page有一个示例,用于检查读取的所有数据:
byte[] verifyArray = binReader.ReadBytes(arrayLength);
if(verifyArray.Length != arrayLength)
{
Console.WriteLine("Error reading the data.");
return;
}
另一种选择是您可能需要Flush
输出缓冲区:
writer.Flush();
答案 7 :(得分:0)
如果您不喜欢使用File的读/写功能,最好尝试使用复制功能
Easiest will be :
File.Copy(source_file_name, destination_file_name, true)
真 - >覆盖现有文件,没有" true"它将创建一个新文件。但是如果该文件已经存在,它将抛出异常,而不是" true"参数。