这几天对FileStream简直头疼,看下面的代码:class Program
{
static void Main(string[] args)
{
FileStreamWriteFile("我爱熊俊");
Console.ReadKey();
}
public static void FileStreamWriteFile(string str)
{
byte[] byData;
char[] charData = str.ToCharArray();;
try
{
FileStream nFile = new FileStream(@"d:\love.txt", FileMode.Create);
charData = str.ToCharArray(); //获得字符数组
byData = new byte[charData.Length]; //初始化字节数组
Encoder enc = Encoding.UTF8.GetEncoder(); //将字符数组转换为正确的字节格式
enc.GetBytes(charData, 0, charData.Length,byData,0,true);
nFile.Seek(0, SeekOrigin.Begin);
nFile.Write(byData, 0, byData.Length);
}
catch (Exception ex)
{
throw ex;
}
}
}上面的代码,用FileStream 向文件写入文本,为什么报错呢----输出字节缓冲区太小,无法包含编码后的数据,编码“Unicode (UTF-8)”的操作回退“System.Text.EncoderReplacementFallback”请问,哪里错了?
{
static void Main(string[] args)
{
FileStreamWriteFile("我爱熊俊");
Console.ReadKey();
}
public static void FileStreamWriteFile(string str)
{
byte[] byData;
char[] charData = str.ToCharArray();;
try
{
FileStream nFile = new FileStream(@"d:\love.txt", FileMode.Create);
charData = str.ToCharArray(); //获得字符数组
byData = new byte[charData.Length]; //初始化字节数组
Encoder enc = Encoding.UTF8.GetEncoder(); //将字符数组转换为正确的字节格式
enc.GetBytes(charData, 0, charData.Length,byData,0,true);
nFile.Seek(0, SeekOrigin.Begin);
nFile.Write(byData, 0, byData.Length);
}
catch (Exception ex)
{
throw ex;
}
}
}上面的代码,用FileStream 向文件写入文本,为什么报错呢----输出字节缓冲区太小,无法包含编码后的数据,编码“Unicode (UTF-8)”的操作回退“System.Text.EncoderReplacementFallback”请问,哪里错了?
public static void FileStreamWriteFile(string text,string filePath)
{
using(FileStream stream = new FileStream(filePath, FileMode.Create))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))
{
writer.Write(text);
}
}
}
这不是保证了两个数组长度一致的吗?为什么不不行?
要怎么设置呢?
改成
byData = new UTF8Encoding().GetBytes(str);