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

// 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 和 文件之间的转换 
 * - - - - - - - - - - - - - - - - - - - - - - - */ 
///  
/// 将 Stream 写入文件 
///  
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(); 
}
///  
/// 从文件读取 Stream 
///  
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);
                    }

                
                }
            }
        }



你可能感兴趣的:(DotNet)