Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用流编写器将特定字节写入文本文件_C#_Text_Stream_Byte - Fatal编程技术网

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
是记事本++显示的第一个字符…)