FileStream类操作的对象是字节流,不是字符 1.读取一个文件的字节流到某个字节数组,然后解码成字符 using System; using System.Collections.Generic; using System.Text; using System.IO; namespace FileStreamReader { class Program { static void Main(string[] args) { //FileStream操作的对象是字节,从文件中读取的不是字符 //两个点表示向上寻找一层 string file = "../../program.cs"; //string file = "新建 文本文档.txt"; byte[] byteData = new byte[600]; char[] datas = new char[600]; //此处需要优化,有可能不存在该文件,从而无法打开。try...catch...finally FileStream fs = null; bool IsSuccess=false; try { fs = new FileStream(file, FileMode.Open); //设定开始读的位置 //从第50个字节开始读;若为SeekOrigin.End,则表示在第50个字节处结束读取 fs.Seek(50, SeekOrigin.Begin); //现在开始读 //byteData是存放读取的字节流的数组 //0表示放在byteData数组的开始处 //600表示要读取的字节数大小 fs.Read(byteData, 0, 600); IsSuccess = true; } catch (IOException e) { Console.WriteLine("出现错误,具体原因为:{0}", e.Message); Console.ReadKey(); } finally { fs.Close(); } if (!IsSuccess) { return; } //输出字节流 foreach (byte b in byteData) { Console.Write(b + " "); } Console.WriteLine("/r/n================================="); //字节流转化成字符 //编码(Encode):字符→字节;解码(Decode):字节→字符 //定义编码器,找到UTF8的一种编码器 Decoder decoder = Encoding.UTF8.GetDecoder(); //gb2312编码方式,读取文本文件 //Encoding gb2312 = Encoding.GetEncoding("gb2312"); //Decoder decoder = gb2312.GetDecoder(); //第一个参数是指定的字节数组 //第二个参数是从字节数组哪里开始转化 //第三个参数是要转化的字节数 //第四个参数是存放转化的字符数组 //第5个参数表示在字符数组哪里开始存放 decoder.GetChars(byteData, 0, 600, datas, 0); Console.WriteLine(datas); Console.ReadKey(); } } } 【运行结果】 59 13 10 117 115 105 110 103 32 83 121 115 116 101 109 46 84 101 120 116 59 13 10 117 115 105 110 10 3 32 83 121 115 116 101 109 46 73 79 59 13 10 13 10 110 97 109 101 115 112 97 99 101 32 70 105 108 1 01 83 116 114 101 97 109 82 101 97 100 101 114 13 10 123 13 10 32 32 32 32 99 108 97 115 115 32 80 1 14 111 103 114 97 109 13 10 32 32 32 32 123 13 10 32 32 32 32 32 32 32 32 115 116 97 116 105 99 32 1 18 111 105 100 32 77 97 105 110 40 115 116 114 105 110 103 91 93 32 97 114 103 115 41 13 10 32 32 32 32 32 32 32 32 123 13 10 32 32 32 32 32 32 32 32 32 32 32 32 47 47 70 105 108 101 83 116 114 101 97 109 230 147 141 228 189 156 231 154 132 229 175 185 232 177 161 230 152 175 229 173 151 232 138 130 239 188 140 228 187 142 230 150 135 228 187 182 228 184 173 232 175 187 229 143 150 231 154 132 228 184 141 230 152 175 229 173 151 231 172 166 13 10 32 32 32 32 32 32 32 32 32 32 32 32 47 47 228 184 164 228 184 170 231 130 185 232 161 168 231 164 186 229 144 145 228 184 138 229 175 187 230 137 190 228 184 128 229 177 130 13 10 32 32 32 32 32 32 32 32 32 32 32 32 115 116 114 105 110 103 32 102 10 5 108 101 32 61 32 34 46 46 47 46 46 47 112 114 111 103 114 97 109 46 99 115 34 59 13 10 32 32 32 32 32 32 32 32 32 32 32 32 47 47 115 116 114 105 110 103 32 102 105 108 101 32 61 32 34 230 150 176 22 9 187 186 32 230 150 135 230 156 172 230 150 135 230 161 163 46 116 120 116 34 59 13 10 13 10 32 32 32 32 32 32 32 32 32 32 32 32 98 121 116 101 91 93 32 98 121 116 101 68 97 116 97 32 61 32 110 101 1 19 32 98 121 116 101 91 54 48 48 93 59 13 10 32 32 32 32 32 32 32 32 32 32 32 32 99 104 97 114 91 93 32 100 97 116 97 115 32 61 32 110 101 119 32 99 104 97 114 91 54 48 48 93 59 13 10 13 10 32 32 32 3 2 32 32 32 32 32 32 32 32 47 47 230 173 164 229 164 132 233 156 128 232 166 129 228 188 152 229 140 150 239 188 140 230 156 137 229 143 175 232 131 189 228 184 141 229 173 152 229 156 168 232 175 165 230 150 135 228 187 182 239 188 140 228 187 142 232 128 140 230 151 160 230 179 149 230 137 147 229 188 128 227 128 130 116 114 121 46 46 46 99 97 116 99 104 46 46 46 102 105 110 97 108 108 121 13 10 32 32 32 32 32 32 32 32 ================================= ; using System.Text; using System.IO; namespace FileStreamReader { class Program { static void Main(string[] args) { //FileStream操作的对象是字节,从文件中读取的不是字符 //两个点表示向上寻找一层 string file = "../../program.cs"; //string file = "新建 文本文档.txt"; byte[] byteData = new byte[600]; char[] datas = new char[600]; //此处需要优化,有可能不存在该文件,从而无法打开。try...catch...finally 2.写入文件 using System; using System.Collections.Generic; using System.Text; using System.IO; namespace FileStreamWriter { class Program { static void Main(string[] args) { string file = "时间.txt"; string nowTime = "当前时间是:" + DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"); byte[] nowTimeByte; FileStream fs = new FileStream(file, FileMode.Create); Encoding utf8 = Encoding.UTF8; nowTimeByte=utf8.GetBytes(nowTime); fs.Seek(0, SeekOrigin.Begin); fs.Write(nowTimeByte, 0, nowTimeByte.Length); Console.WriteLine(nowTime); Console.WriteLine("===================="); foreach (byte b in nowTimeByte) { Console.Write(b+" "); } Console.ReadKey(); } } } 【运行结果】 当前时间是:2010年07月22日08时59分01秒 ==================== 229 189 147 229 137 141 230 151 182 233 151 180 230 152 175 239 188 154 50 48 49 48 229 185 180 48 55 230 156 136 50 50 230 151 165 48 56 230 151 182 53 57 229 136 134 48 49 231 167 146