文件及数据流技术

原文来源:《C#从入门到精通》

数据流提供了一中向 后备存储 写入字节和从 后备存储 读取字节的方式。它是在.NET Framework中执行读写文件操作时一种非常重要的介质。

.NET Framework使用来支持读取和写入文件。

开发人员可以将视为:

一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流中的当前位置

1、流操作

流中包含的数据可能来自内存、文件或TCP/IP套接字。

基本操作:
1、读取:将数据从流传输到数据结构(如:字符串或字节数组)中。
2、写入:将数据从数据源传输到流中。
3、查询:查询和修改在流中的位置。

数据结构原来是:字符串、字节数组等

2、流的类型

在.NET Framework中,流由Stream类来表示,该类构成了所有其他流的抽象类。不能直接创建Stream类的实例,但是必须使用它实现其中的一个类。

C#中有许多类型的流,但在处理文件的输入/输出(I/O)时,最重要的类型为FileStream类,它提供读取和写入文件的方式。在处理文件I/O时使用的其他流主要包括BufferedStream、CrytoStream、MemoryStream和NetworkStream等。

文本文件的写入与读取

文本文件的写入与读取主要是通过StreamWriter类和StreamReader类来实现的。

1、StreamWriter类

StreamWriter是专门用来处理文本文件的类,可以方便地向文本文件中写入字符串。同时也负责重要的转换和处理向FileStream对象写入工作。

2、StreamReader类
StreamReader是专门用来读取文本文件的类,它可以从底层Stream对象创建StreamReader对象的实例,而且也能指定编码规范参数。

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == string.Empty)
    {
        MessageBox.Show("要写入的文件内容不能为空");
    }
    else
    {
        saveFileDialog1.Filter = "文本文件(*.txt)|*.txt";        //设置保存文件的格式
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, true);
            sw.WriteLine(textBox1.Text);//向创建的文件中写入内容
            sw.Close();                 //关闭当前文件写入流
            textBox1.Text = string.Empty;
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    openFileDialog1.Filter = "文本文件(*.txt)|*.txt";           //设置打开文件的格式
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = string.Empty;
        StreamReader sr = new StreamReader(openFileDialog1.FileName);
        textBox1.Text = sr.ReadToEnd();     //调用ReadToEnd方法读取选中文件的全部内容
        sr.Close();                         //关闭当前文件读取流
    }
}

程序的运行结果如图:
这里写图片描述

二进制文件的写入与读取

二进制文件的写入与读取主要是通过BinaryWriter类和BinaryReader类来实现的。

1、BinaryWriter类

BinaryWriter类以二进制形式将基元类型写入流,并支持用特定编码写入字符串。

2、BinaryReader类
BinaryReader用特定的编码将基元数据类型读作二进制值。

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == string.Empty)
    {
        MessageBox.Show("要写入的文件内容不能为空");
    }
    else
    {
        saveFileDialog1.Filter = "二进制文件(*.dat)|*.dat";        //设置保存文件的格式
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            FileStream myStream = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            BinaryWriter myWriter = new BinaryWriter(myStream);//使用FileStream对象实例化BinaryWriter二进制写入流对象
            myWriter.Write(textBox1.Text);//以二进制方式向创建的文件中写入内容
            myWriter.Close();//关闭当前二进制写入流
            myStream.Close();//关闭当前文件流
            textBox1.Text = string.Empty;
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    openFileDialog1.Filter = "二进制文件(*.dat)|*.dat";           //设置打开文件的格式
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = string.Empty;
        FileStream myStream = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.ReadWrite);
        BinaryReader myReader = new BinaryReader(myStream);//使用FileStream对象实例化BinaryReader二进制写入流对象
        if (myReader.PeekChar() != -1)
        {
            textBox1.Text = Convert.ToString(myReader.ReadInt32());
        }
        myReader.Close();                         //关闭当前二进制写入流
        myStream.Close();                         //关闭当前文件流
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 NTFS文件系统若干技术研究 1 RESEARCH ON SOME TECHNIQUE OF NTFS 1 目录 2 表目录 4 图目录 5 摘 要 6 第一章 NTFS介绍 7 1.1现状 7 1.2 NTFS特点 9 1.2.1优点 9 1.2.2 NTFS的不足 11 1.3 NTFS未来 12 第二章 NTFS相关概念理论 14 2.1 RAID 简介 14 2.2 NTFS文件系统分区 14 2.2.1 基本分区 14 2.2.2 动态分区 14 2.3 NTFS参数结构介绍 14 2.3.1 NTFS的DBR 15 2.3.2 NTFS文件空间分配 16 2.3.3 NTFS元文件 17 2.3.4 元文件和DBR参数关系 21 2.3.5 NTFS的文件和目录 23 2.3.6 常驻属性与非常驻属性 25 2.3.7 MFT文件记录结构分析 29 2.3.7.1基本概念 29 2.3.7.2文件记录头分析 31 2.3.7.3标准属性分析 32 2.3.7.4文件名属性分析 34 2.3.7.5数据流属性分析 37 2.3.7.6 位图属性分析 37 2.3.7.7 $MFT结构总结 38 2.3.8 $Boot元文件介绍 39 2.3.9 NTFS索引与目录 40 2.4 EFS 43 第三章 NTFS文件基本操作 46 第四章 NTFS文件系统数据恢复研究 47 4.1数据恢复原理 47 4.2常见数据恢复工具 48 4.3 NTFS数据技术基础 50 4.3.1基础概念 50 4.3.1.1硬盘数据结构 50 4.3.1.2硬盘分区方式 51 4.3.1.3数据存储原理 52 4.3.1.4系统启动流程 53 4.3.2硬盘数据恢复方案分析 54 4.4数据恢复技术实现 57 4.5数据恢复经验介绍 57 4.5.1几个常识性问题 57 4.5.2技术来源 57 4.5.3硬盘修复需要理解的基本概念 58 4.6数据备份介绍 60 第五章 NTFS相关领域技术介绍 61 5.1 RH8下最简单编译NTFS模块的方法 61 5.2 UBUNTU下安全读写NTFS分区格式文件 61 5.3在FAT32中读写NTFS分区的数据 63 5.4 DOS下访问NTFS 63 第六章 结论 65 参考文献 66 附录A DOS下访问NTFS分区,查找指定文件的源代码 67 附录B WINDOWS下NTFS文件恢复源代码 71 后记 83

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值