我如何避免文件创建 2 次,只有一个文件的内容应该编码 base64 字符串


  • 我必须循环字符串列表并将每个字符串写在一行中。
  • 然后我必须将其编码为 base64 字符串,并需要创建一个文件。
  • 这个文件我将与其他程序共享编码文件,解码文件内容应逐行显示

为此,

  • 我首先创建一个基本文件并逐行编写内容。

  • 然后我正在读取文件的所有字节。

  • 然后创建一个 base64 字符串

  • 然后将 base64 字符串写入新文件并删除基文件

    var lstStr = new List<string>
    {
    "Hello1", "Hello2"
    };
    using (var file = new StreamWriter(@"C:TEMPbase_file.txt"))
    {
    foreach (var str in lstStr)
    {
    //need to write data line by line
    file.WriteLine(str);
    }
    }
    
    var bytes = File.ReadAllBytes(@"C:TEMPbase_file.txt");
    var base64String = Convert.ToBase64String(bytes);
    File.WriteAllText(@"C:TEMPbase64_file.txt", base64String);
    //delete base file
    File.Delete(@"C:TEMPbase_file.txt");
    

现在我如何避免文件创建 2 次,只有一个文件的内容应该编码 base64 字符串。

当由其他应用程序解码时,内容应逐行显示。

var file = File.ReadAllText(@"C:TEMPbase64_file.txt");
File.WriteAllBytes(@"C:TEMPfile.txt", Convert.FromBase64String(file));

你好1

你好2

假设字符串采用 UTF-8 编码:

byte[] dataAsBytes = System.Text.Encoding.UTF8.GetBytes(String.Join(Environment.NewLine, lstStr));
File.WriteAllText(@"C:TEMPbase64_file.txt",  Convert.ToBase64String(dataAsBytes));

您可以简单地使用MemoryStream.

这是您的代码更改为使用它:

var lstStr = new List<string>
{
"Hello1", "Hello2"
};
var memoryStream = new MemoryStream();
using (var file = new StreamWriter(memoryStream))
{
foreach (var str in lstStr)
{
//need to write data line by line
file.WriteLine(str);
}
}

var bytes = memoryStream.ToArray();
var base64String = Convert.ToBase64String(bytes);
File.WriteAllText(@"C:TEMPbase64_file.txt", base64String);

相关内容

  • 没有找到相关文章

最新更新