好吧,我正在尝试将一些值和字符串写入文本文件。
但是这个文本文件必须包含 2 个字节
这些是我在完成将其他值写入文本文件后要插入到文本文件中的 2 个字节:
我尝试了这种方法,但我不知道如何通过它写入字节
using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8))
在将我想要的字符串放在文本文件上后,我不知道如何将它们写入文本文件。
我只是想通了。它对我来说效果很好。这个想法是你用一个可以写字节数组的 FileStream 打开文件,然后在它上面放一个 StreamWriter 来写字符串。然后您可以使用两者将字符串与字节混合:
// StreamWriter writer = new StreamWriter(new FileStream("file.txt", FileMode.OpenOrCreate));
byte[] bytes = new byte[] { 0xff, 0xfe };
writer.BaseStream.Write(bytes, 0, bytes.Length);
如果我从你的问题中没记错的话。您想将字符串写入文件,然后将字节写入文件吗?
这个例子将为你做到这一点:
using (FileStream fsStream = new FileStream("Bytes.data", FileMode.Create))
using (BinaryWriter writer = new BinaryWriter(fsStream, Encoding.UTF8))
{
// Writing the strings.
writer.Write("The");
writer.Write(" strings");
writer.Write(" I");
writer.Write(" want");
writer.Write(".");
// Writing your bytes afterwards.
writer.Write(new byte[]
{
0xff,
0xfe
});
}
使用十六进制编辑器打开“Bytes.data”文件时,您应该看到以下字节:
如果我理解正确,您正在尝试将一些字符串写入文本文件,但您想向该文件添加 2 个字节。
为什么不尝试使用: File.WriteAllBytes ?
使用将您的字符串转换为字节数组
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(str); // If your using UTF8
从原始byteArray创建一个新的字节数组,并增加 2 个字节。
并使用以下命令将它们写入文件:
File.WriteAllBytes("MyFile.dat", newByteArray)
这是寻找解决方案的另一种方法...
StringBuilder sb = new StringBuilder();
sb.Append("Hello!! ").Append(",");
sb.Append("My").Append(",");
sb.Append("name").Append(",");
sb.Append("is").Append(",");
sb.Append("Rajesh");
sb.AppendLine();
//use UTF8Encoding(true) if you want to use Byte Order Mark (BOM)
UTF8Encoding utf8withNoBOM = new UTF8Encoding(false);
byte[] bytearray;
bytearray = utf8withNoBOM.GetBytes(sb.ToString());
using (FileStream fileStream = new FileStream(System.Web.HttpContext.Current.Request.MapPath("~/" + "MyFileName.csv"), FileMode.Append, FileAccess.Write))
{
StreamWriter sw = new StreamWriter(fileStream, utf8withNoBOM);
//StreamWriter for writing bytestream array to file document
sw.BaseStream.Write(bytearray, 0, bytearray.Length);
sw.Flush();
sw.Close();
fileStream.Close();
}
有一个StreamWriter.Write(char)
会写入一个 16 位的值。您应该能够使用十六进制值设置变量并将其char val = '\xFFFE'
传递给Write
. 您还可以使用FileStream
where 所有 Write 方法都对字节起作用,并且它特别有一个WriteByte(byte)
方法。它的MSDN 文档提供了一个输出 UTF8 文本的示例。
保存字符串后,只需使用例如 File.WriteAllBytes 或 BinaryWriter 写入这些字节: 可以将 Byte[] 数组写入 C# 中的文件吗?