- 我必须循环字符串列表并将每个字符串写在一行中。
- 然后我必须将其编码为 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);