我有两个字符串,每个字符串都是一个PDF的礼节,我必须把这两个礼节写成一个PDF文件。为此,我将每个字符串转换为字节数组(我不知道这是否是最好的方法),并将每个字符串写入 PDF 文件。当我将一个礼节写入PDF文件时一切都很好,我看到了礼节,但后来我尝试附加第二个礼节,结果是一样的,进入文件的只是第一个礼节。例如,此代码编写第一个礼仪并且一切正常:
Dim fs As FileStream = New FileStream(fullFileName, FileMode.CreateNew)
fs.Close()
fs = New FileStream(fullFileName, FileMode.Append)
Dim str As String = GetPDFString(27)
Dim binaryData As Byte() = ConvertStringToByte(str)
fs.Write(binaryData, 0, binaryData.Length)
fs.Close()
Run Code Online (Sandbox Code Playgroud)
但是如果我想使用此代码在同一个 PDF 文件中附加第二个礼节……这不是附加的。
Dim fs As FileStream = New FileStream(fullFileName, FileMode.CreateNew)
fs.Close()
fs = New FileStream(fullFileName, FileMode.Append)
Dim str As String = GetPDFString(25)
Dim str1 As String = GetPDFString(27)
Dim binaryData As Byte() = ConvertStringToByte(str)
Dim binaryData1 As Byte() = ConvertStringToByte(str1)
fs.Write(binaryData, 0, binaryData.Length)
fs.Write(binaryData1, 0, binaryData1.Length)
fs.Close()
Run Code Online (Sandbox Code Playgroud)
两者都有相同的结果,我不明白为什么没有附加第二个礼节?非常感谢。
您的问题标题表明您在询问如何将字节附加到 FileStream,而不是关于 PDF,而不是关于 Base64 字符串转换(您在代码中使用)。
在 StackOverflow 上提问之前,您需要确保一次只传达一个问题。删除所有不相关的内容,并准备一个我们可以在全新 VS 项目中使用的代码示例,以便重现您的问题并帮助您解决它。
现在,如果您的问题真的是关于将一个字节(或一个字节数组)附加到文件中,那么它就像一行代码(或两行,如果您保持 FileStream 方法)一样简单。见以下链接:
为了您的方便,也复制粘贴在这里(并从 C#转换为 VB.NET):
Dim appendMe As Byte() = New Byte(999) {}
File.AppendAllBytes("C:\test.exe", appendMe)
Run Code Online (Sandbox Code Playgroud)
或者,为了避免内存溢出,如果您的字节数组预计足够大:
Public Shared Sub AppendAllBytes(path As String, bytes As Byte())
'argument-checking here.
Using stream = New FileStream(path, FileMode.Append)
stream.Write(bytes, 0, bytes.Length)
End Using
End Sub
Run Code Online (Sandbox Code Playgroud)