zoukankan      html  css  js  c++  java
  • C# 之 读写文件

    1、使用 FileStream 读写文件

      添加命名空间引用:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

      读取核心代码:

    byte[] byData = new byte[100];
    char[] charData = new char[1000];
    try
    {
        FileStream sFile = new FileStream("文件路径",FileMode.Open);
        sFile.Seek(55, SeekOrigin.Begin);
       //第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节
        // 数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,
        //最后一个参数规定从文件读多少字符.
        sFile.Read(byData, 0, 100); }
    catch (IOException e)
    {
        Console.WriteLine("An IO exception has been thrown!");
        Console.WriteLine(e.ToString());
        Console.ReadLine();
        return;
    }
    Decoder d = Encoding.UTF8.GetDecoder();
    d.GetChars(byData, 0, byData.Length, charData, 0);
    Console.WriteLine(charData);
    Console.ReadLine();

      写入核心代码:

    FileStream fs = new FileStream(文件路径,FileMode.Create);
    //获得字节数组
    byte [] data =new UTF8Encoding().GetBytes(String);
    //开始写入
    fs.Write(data,0,data.Length);
    //清空缓冲区、关闭流
    fs.Flush();
    fs.Close();

      

    2、使用StreamReader和StreamWriter读写文件

      StreamReader 读取文件:

    StreamReader objReader = new StreamReader(文件路径);
    string sLine="";
    ArrayList LineList = new ArrayList(); 
    while (sLine != null)
    {
        sLine = objReader.ReadLine();
        if (sLine != null&&!sLine.Equals(""))
            LineList.Add(sLine);
    }
    objReader.Close();
    return LineList;

      StreamWriter写文件:

    FileStream fs = new FileStream(文件路径,FileMode.Create);   
    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));//通过指定字符编码方式可以实现对汉字的支持,否则在用记事本打开查看会出现乱码 sw.Flush(); if (checkfile) { sw.BaseStream.Seek(0, SeekOrigin.End);//移动到结尾 } else { sw.BaseStream.Seek(0, SeekOrigin.Begin); } string temp = "随便写点东西"; sw.WriteLine(temp); sw.Flush(); sw.Close();
    fs.Close();

      用 BinaryWriter 写入文件:

    //实例化一个保存文件对话框
    SaveFileDialog sf = new SaveFileDialog();
    //设置文件保存类型
    sf.Filter = "txt文件|*.txt|所有文件|*.*";
    //如果用户没有输入扩展名,自动追加后缀
    sf.AddExtension = true;
    //设置标题
    sf.Title = "写文件";
    //如果用户点击了保存按钮
    if (sf.ShowDialog() == DialogResult.OK)
    {
        //实例化一个文件流--->与写入文件相关联
        FileStream fs = new FileStream(sf.FileName, FileMode.Create);
        //实例化BinaryWriter
        BinaryWriter bw = new BinaryWriter(fs);
        bw.Write(this.textBox1.Text);
        //清空缓冲区
        bw.Flush();
        //关闭流
        bw.Close();
        fs.Close();
    }

      用缓存流复制文件:

    //创建两个文件流 一个是源文件相关,另一个是要写入的文件
    FileStream fs = new FileStream(@"D:KuGoo爱得太多.wma",FileMode.Open);
    FileStream fs2 = new FileStream(@"D:love.wma",FileMode.Create);
    //创建一个字节数组,作为两者之间的媒介byte[] data = new byte[1024];
    //创建两个缓冲流,与两个文件流相关联
    BufferedStream bs = new BufferedStream(fs);
    BufferedStream bs2= new BufferedStream(fs2);
    //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
    while(fs.Read(data,0,data.Length)>0) { fs2.Write(data,0,data.Length); fs2.Flush(); } //关闭流 fs.Close(); fs2.Close();

      用内存流来读取图片:

    //实例化一个文件流
    FileStream fs = new FileStream(文件地址, FileMode.Open);
    //把文件读取到字节数组
    byte[] data = new byte[fs.Length];
    fs.Read(data, 0, data.Length);
    fs.Close();
    //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
    MemoryStream ms = new MemoryStream(data);
    //设置图片框 pictureBox1中的图片
    this.pictureBox1.Image = Image.FromStream(ms);
  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/xinaixia/p/5562710.html
Copyright © 2011-2022 走看看