C# 使用流编写器将特定字节写入文本文件
我正在尝试将一些值和字符串写入文本文件。C# 使用流编写器将特定字节写入文本文件,c#,text,stream,byte,C#,Text,Stream,Byte,我正在尝试将一些值和字符串写入文本文件。 但此文本文件必须包含2个字节 以下是我在将其他值写入文本文件后要插入文本文件的2个字节: 我尝试过这种方法,但我不知道如何通过它写入字节 using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8)) 在将所需字符串放入文本文件后,我不知道如何将其写入文本文件。保存字符串后,只需使用file.writealBytes或BinaryWriter写入这些字节
但此文本文件必须包含2个字节 以下是我在将其他值写入文本文件后要插入文本文件的2个字节: 我尝试过这种方法,但我不知道如何通过它写入字节
using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8))
在将所需字符串放入文本文件后,我不知道如何将其写入文本文件。保存字符串后,只需使用file.writealBytes或BinaryWriter写入这些字节:
有一个
StreamWriter.Write(char)
可以写入16位值。您应该能够使用十六进制值设置变量,如char val='\xffe'
,并将其传递给Write
。您还可以使用FileStream
,其中所有的写方法都是以字节为单位的,并且它特别有一个WriteByte(byte)
方法。for it给出了一个输出UTF8文本的示例。如果我理解正确,您试图将一些字符串写入文本文件,但希望向该文件添加2个字节
为什么不尝试使用:File.writealBytes
使用以下命令将字符串转换为字节数组
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(str); // If your using UTF8
从原始的字节数组创建一个新的字节数组,并添加2个字节
并使用以下命令将其写入文件:
File.WriteAllBytes("MyFile.dat", newByteArray)
如果我没记错你的问题。要将字符串写入文件,然后将字节写入文件 此示例将为您提供:
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”文件时,您应该看到以下字节:
我刚刚想出了这个办法。它对我很有效。其思想是使用可以写入字节数组的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);
这里还有一种方法可以找到解决方案
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();
}
您是否尝试过
文件。打开
?不清楚这些字节是什么意思,或者文本文件的其余部分是什么。你能给我们更多的上下文吗?你想写UTF-16文本吗?这两个字节可能是UTF-16的字节顺序标记(BOM)(请参阅)。在这种情况下,请尝试在调用中更改为Encoding.Unicode,我相信框架会为您编写BOM表。可能的重复操作效果很好,只是我必须使用writer.write(Encoding.UTF8.GetBytes(“foobar”);
来防止文件开头出现SUB
字符。(SUB
是记事本++显示的第一个字符…)