[英]C# Append byte array to existing file
我想将一个字节数组附加到一个已经存在的文件(C:\\test.exe)
。 假设有以下字节数组:
byte[] appendMe = new byte[ 1000 ] ;
File.AppendAllBytes(@"C:\test.exe", appendMe); // Something like this - Yes, I know this method does not really exist.
我会使用 File.WriteAllBytes 来做到这一点,但我将使用一个巨大的字节数组,并且不断抛出 System.MemoryOverload 异常。 因此,我很可能必须将大数组拆分为多个部分,并将每个字节数组附加到文件末尾。
谢谢,
埃文
一种方法是使用FileMode.Append
创建模式创建FileStream
。
打开文件(如果存在)并查找到文件末尾,或创建一个新文件。
这看起来像:
public static void AppendAllBytes(string path, byte[] bytes)
{
//argument-checking here.
using (var stream = new FileStream(path, FileMode.Append))
{
stream.Write(bytes, 0, bytes.Length);
}
}
FileStream
。Seek()
到最后。Write()
字节。Close()
流。您还可以使用内置的FileSystem.WriteAllBytes Method (String, Byte[], Boolean)
。
public static void WriteAllBytes(
string file,
byte[] data,
bool append
)
将 append 设置为True以附加到文件内容; False覆盖文件内容。 默认值为假。
我不确定问题是什么,但 C# 有一个BinaryWriter
方法,它接受一个字节数组。
bool writeFinished = false;
string fileName = "C:\\test.exe";
FileStream fs = new FileString(fileName);
BinaryWriter bw = new BinaryWriter(fs);
int pos = fs.Length;
while(!writeFinished)
{
byte[] data = GetData();
bw.Write(data, pos, data.Length);
pos += data.Length;
}
当所有数据都已附加时, writeFinished
为真, GetData()
返回要附加的数据数组。
你可以简单地创建一个函数来做到这一点
public static void AppendToFile(string fileToWrite, byte[] DT)
{
using (FileStream FS = new FileStream(fileToWrite, File.Exists(fileToWrite) ? FileMode.Append : FileMode.OpenOrCreate, FileAccess.Write)) {
FS.Write(DT, 0, DT.Length);
FS.Close();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.