C# 读写文件(StreamRead,StreamWrite,File,FileStream)

来源:互联网 发布:win版和mac版什么区别 编辑:程序博客网 时间:2024/05/18 03:50
// StreamRead,StreamWrite,File只能操作文本文件 //FileStream可以操作所有格式 包括文本,文件,图片,视频//文件所在全路径 string sourceFile = System.IO.Path.Combine(AppContext.ExecPath, "Platforms", "Ali", "Config", "PicNameFormat.inf");//SreamRead读取文件using (StreamReader reader = new StreamReader(sourceFile)) {        //reader.ReadLine();读取第一行        string data = reader.ReadToEnd();//读取所有 }//StreamWrite写入文件 using (StreamWriter writer = new StreamWriter(sourceFile)) {         //writer.Write("写入的内容");         //也可以如下面一行一行写入         writer.WriteLine("0");         writer.WriteLine("1");         writer.WriteLine(picName);         writer.WriteLine(txtCount.Text); }//File即可以读取文本 也可以写入文本 //读取string data = File.ReadAllText(sourceFile);string[] datas = File.ReadAllLines(sourceFile); //写入 string[] ss = new string[]{"sfds","fsfs","sfsfds"};File.WriteAllLines(sourceFile, ss); File.WriteAllText(sourceFile, "sfsfsdf"); //FileStream可以操作所有格式 包括文本,文件,图片,视频//FileStream读取string ss = null; byte[] buffer = new byte[1024 * 1024 * 1]; using (FileStream sr = new FileStream(sourceFile,FileMode.OpenOrCreate,FileAccess.Read)) {       int sss = sr.Read(buffer,0,buffer.Length);       ss = Encoding.Default.GetString(buffer, 0, sss); } //FileStream写入 using (FileStream fsWrite = new FileStream(sourceFile,FileMode.OpenOrCreate, FileAccess.Write)){        byte[] buffer = Encoding.Default.GetBytes(txtAccountKey.Text);       fsWrite.Write(buffer, 0, buffer.Length);} 

Stream 和 文件之间的转换

/* - - - - - - - - - - - - - - - - - - - - - - - -   * Stream 和 文件之间的转换  * - - - - - - - - - - - - - - - - - - - - - - - */ /// <summary> /// 将 Stream 写入文件 /// </summary> public void StreamToFile(Stream stream,string fileName) {     // 把 Stream 转换成 byte[]     byte[] bytes = new byte[stream.Length];     stream.Read(bytes, 0, bytes.Length);     // 设置当前流的位置为流的开始     stream.Seek(0, SeekOrigin.Begin);    // 把 byte[] 写入文件     FileStream fs = new FileStream(fileName, FileMode.Create);     BinaryWriter bw = new BinaryWriter(fs);     bw.Write(bytes);     bw.Close();     fs.Close(); }/// <summary> /// 从文件读取 Stream /// </summary> public Stream FileToStream(string fileName) {                 // 打开文件     FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);     // 读取文件的 byte[]     byte[] bytes = new byte[fileStream.Length];     fileStream.Read(bytes, 0, bytes.Length);     fileStream.Close();     // 把 byte[] 转换成 Stream     Stream stream = new MemoryStream(bytes);     return stream; }
FileStream文件流及使用文件流来实现多媒体文件的复制示例

static void Main(string[] args)        {            //思路:就是先将要复制的多媒体文件读取出来,然后再写入到你指定的位置            string source = @"C:\Users\SpringRain\Desktop\1、复习.wmv";            string target = @"C:\Users\SpringRain\Desktop\new.wmv";            CopyFile(source, target);            Console.WriteLine("复制成功");            Console.ReadKey();        }        public static void CopyFile(string soucre, string target)        {            //1、我们创建一个负责读取的流            using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))            {                //2、创建一个负责写入的流                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))                {                    byte[] buffer = new byte[1024 * 1024 * 5];                    //因为文件可能会比较大,所以我们在读取的时候 应该通过一个循环去读取                    while (true)                    {                        //返回本次读取实际读取到的字节数                        int r = fsRead.Read(buffer, 0, buffer.Length);                        //如果返回一个0,也就意味什么都没有读取到,读取完了                        if (r == 0)                        {                            break;                        }                        fsWrite.Write(buffer, 0, r);                    }                                }            }        }



0 0