//--------------------------------------------^ ^-----------------------------------------------------------
static void Main(string[] args)
{
//1.get current assembly location
string currentPath=Assembly.GetExecutingAssembly().Location; //Get Executing Assembly()
string currentDirectoryPath=Path.GetDirectoryName(currentPath);
//2.create a file under current directory path
FileStream fs=File.Create([email protected]"\test.txt");
fs.Close();
string msg="This is a test string..";
//3.change string to byte[]
byte[] bs=System.Text.Encoding.UTF-8.GetBytes(msg);
File.WriteAllBytes([email protected]"\test.txt",bs);
//4.change byte[] to string
byte[] rbs=File.ReadAllBytes([email protected]"\test.txt");
string rString=System.Text.Encoding.UTF-8.GetString(rbs);
Console.WriteLine(rString);
}
//-----------------------------------------------------------------------------------------
编码乱码问题:
//英文占1个字节8个bit 中文占2个字节 16个bit Unicode 国际码表 ->在该码表中 任何字符都占2个字节 //文件头 标记文件的编码格式 //UTF-8 国际码表: 英文占1个字节 中文占3个字节 //乱码问题出现: 文件保存编码格式与读取文件的编码格式不一致
//----------------------------------------------------------------------------------------
文件读写步骤:
string txt="This is a filestream test";
byte[] buffer= System.Text.Encoding.UTF8.GetBytes(txt);
//1.创建文件流
FileStream fs=new FileStream(@"D:\test.txt",FileMode.Create,FileAccess.Write); //(文件位置,创建文件模式,权限)
//2.写入文件
fs.Write(buffer,0,buffer.Length); //(要写入的数组,开始写入的位置一般是0,要写入的长度)
//3.关闭文件流 清空缓冲区
fs.Flush();
fs.Close();
//4.释放相关资源
fs.Dispose(); //一般调用此步骤就行 包含第三步
//---------------
以上 不需要手动调用第四步的方法: 加using:
using(FileStream fs=new FileStream(@"D:\fileTest.txt",FileMode.Create,FileAccess.Write)) //当fs作用域超出此范围时候自动调用 fs.Dispose();
{
fs.Write(buffer,0,buffer.Length);
}
//-----------------------------------------------------------------------------------------