11

好吧,我正在尝试将一些值和字符串写入文本文件。
但是这个文本文件必须包含 2 个字节

这些是我在完成将其他值写入文本文件后要插入到文本文件中的 2 个字节:

十六进制

我尝试了这种方法,但我不知道如何通过它写入字节

using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8))

在将我想要的字符串放在文本文件上后,我不知道如何将它们写入文本文件。

4

6 回答 6

23

我只是想通了。它对我来说效果很好。这个想法是你用一个可以写字节数组的 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);
于 2014-12-03T10:30:21.900 回答
14

如果我从你的问题中没记错的话。您想将字符串写入文件,然后将字节写入文件吗?

这个例子将为你做到这一点:

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”文件时,您应该看到以下字节: 在此处输入图像描述

于 2013-10-15T21:23:37.400 回答
4

如果我理解正确,您正在尝试将一些字符串写入文本文件,但您想向该文件添加 2 个字节。

为什么不尝试使用: File.WriteAllBytes ?

使用将您的字符串转换为字节数组

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(str); // If your using UTF8

从原始byteArray创建一个新的字节数组,并增加 2 个字节。

并使用以下命令将它们写入文件:

File.WriteAllBytes("MyFile.dat", newByteArray)
于 2013-10-15T21:23:02.190 回答
4

这是寻找解决方案的另一种方法...

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();
}
于 2017-08-03T11:31:10.767 回答
0

有一个StreamWriter.Write(char)会写入一个 16 位的值。您应该能够使用十六进制值设置变量并将其char val = '\xFFFE'传递给Write. 您还可以使用FileStreamwhere 所有 Write 方法都对字节起作用,并且它特别有一个WriteByte(byte)方法。它的MSDN 文档提供了一个输出 UTF8 文本的示例。

于 2013-10-15T21:15:21.603 回答
-1

保存字符串后,只需使用例如 File.WriteAllBytes 或 BinaryWriter 写入这些字节: 可以将 Byte[] 数组写入 C# 中的文件吗?

于 2013-10-15T21:11:52.837 回答