第8章文件与数据流
一、文件和流的概念
文件是指在各种驱动器上(硬盘、可移动磁盘等)永久或临时存储的数据的有序集合,是进行数据读/写操作的基本对象。
文件通常具有文件名、路径、访问权限等属性。
流从概念上来说类似于单独的磁盘文件,它也是进行读/写操作的对象。
流提供了连续的字节存储空间,通过流可以向后备的存储器写入数据,也可以从后备存储器读取数据。
与磁盘文件直接相关的流称为“文件流”。
除此之外,还有网络流、内存流等其他类型的流。
流用于传输数据时,有两个传输方向:
读:将数据从外部数据源传输到程序中,这是读取流。
写:将数据从程序传输到外部数据源,这是写入流。
二、相关知识
1.流的创建
FileStream fs = new FileStream( "test1.dat",
FileMode.Create, FileAccess.Write);
一般格式:
FileStream fs = new FileStream( string path,
FileMode mode, FileAccess access);
参数含义:
path:指定当前FileStream对象将封装的文件的相
对路径或绝对路径。
可以只是文件名(在程
序所在目录下创建或打开文件)
mode:指定如何打开或创建文件,它的值必须是
FileMode枚举中的值。
access:指定如何访问文件,它的值必须是
FileAccess枚举中的值。
2)将数据写入流
fs.write(byte[] array,int offset,int count);
参数含义:
array:要写入文件流的字节数组
offset:array数组中开始写入文件流的字节的下
标。
count:将要写入流的最大字节数
3)从流中读取数据
fs.ReadByte()从流中读取一个字节(返回已转换
为int的字节),并将流内的位置向前推进一个。
如果已经到达流的末尾,则返回-1。
在读之前,用canRead属性确定当前对象是否支持
读取操作。
4)关闭文件流
fs.close();
关闭文件流并释放与当前文件流关联的任何资
源。
所有表示流的类都是从Stream类继承来的。
FileStream类继承自Stream类,主要用于二进制文件
的输入与输出。
StreamWriter(写入器)和StreamReader(读取器)主要用于文本文件的读写操作。
实例2中相关知识:
1、流的文本读写
StreamReader和StreamWriter主要用于以文本方式对流进行读写操作,它们通常成对使用,它们的构造函数有多
种重载形式。
可以通过指定文件名或指定另一个流对象来
创建读写器对象。
对于StreamWriter对象,还可以指定是改
写还是追加文件内容。
2、读写器的创建
本例中我们使用流对象创建写入器对象:
FileStream fs = new FileStream("phoneBook.txt",
FileMode.Append,FileAccess.Write);
StreamWriter fw = new StreamWriter(fs);
创建读取器对象:
FileStream fs = new FileStream("phoneBook.txt",
FileMode.Open,FileAccess.Read);
StreamReader fr = new StreamReader(fs);
3、读写器的读和写操作
写操作:StreamWriter提供了Write()和WriteLine()方法对流
进行写操作。
不同之处是WriteLine()方法会在每个字
符串后面加上换行符。
这两个方法可以接受的参数类
型很丰富,包括char、int、string、float、double
及object等。
如:string inputStr;
inputStr = txtName.Text +"\t"+ txtPhone.Text;
fw.WriteLine(inputStr);
读操作:StreamReader提供了4种方法对流进行读操作。
Read()、ReadLine()、ReadBlock()、ReadToEnd() do
{ lineStr = fr.ReadLine();
outputStr += lineStr + "\r\n";
}while (lineStr != null);
4、读写器的关闭
fw.Close(); fs.Close();
fr.Close(); fs.Close();
提示:如果同一个文件同时创建了StreamReader和StreamWriter 对象,那么应该先关闭StreamWriter对象,再关闭StreamReader对象。
C#的两种程序形式:控制台应用程序
窗体应用程序
数据类型:整型
实型 float double decimal
float x=1.35f;
字符型 char …a‟…A‟…\n‟…\t‟
字符串 string “hello\n”
自定义类型:结构体枚举数组
运算符及表达式
三种基本结构:顺序循环(while , do…while,for,foreach)选择(if,switch)
break continue
函数异常处理。