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);
  • 相关阅读:
    Linux图形界面从登录列表中隐藏用户和开机自动登录
    VMware Workstation报错 : 另一个正在运行的VMware进程可能正在使用配置文件
    Vim命令总结
    Linux常用命令总结
    Oracle使用中的常规操作总结
    Oracle分页查询和SQL server分页查询总结
    Oracle学习总结
    Resharper2019 1.2破解教程
    C#实现RSA加密解密
    windows上git clone命令速度过慢问题的解决
  • 原文地址:https://www.cnblogs.com/xinaixia/p/5562710.html
Copyright © 2011-2022 走看看