文件流:重点。前面是铺垫而已,这才是流操作的核心。
1、拷贝文件的两种方式:将源文件内容全部读到内存中,再写到目标文件中;读取源文件的1KB内存,写到目标文件中,再读取源文件的1KB内存,再写到目标文件中……。第二种方式就是一种流(Stream)的操作。
2、用File.ReadAllText、File.WriteAllText进行文件读写是一次性读、写,如果文件非常大会占内存、慢。需要读一行处理一行的机制,这就是流(Stream)。Stream会只读取要求的位置、长度的内容。
3、就像SqlConnection一样,Stream不会将所有内容一次性读取到内存中,有一个指针,指针指到哪里才能读、写到哪里。
4、流有很多种类,文件流是其中一种。FileStream类new FileStream(“c:/a.txt”, filemode, fileaccess)后两个参数可选值及含义自己看。 FileStream可读可写。可以使用File.OpenRead、File.OpenWrite这两个简化调用方法。
5、练习:文件加密(每一位用255-r)
FileInfo fileInfo = new FileInfo(txtSrcFile.Text);
progressBar1.Maximum = (int)fileInfo.Length;
//核心
using (FileStream inputStream =
new FileStream(txtSrcFile.Text, FileMode.Open))
{
using (FileStream outputStream
= new FileStream(txtDescFile.Text, FileMode.Create))
{
byte[] bytes = new byte[1024*1204];
int readBytes;
while ((readBytes = inputStream.Read(bytes, 0, bytes.Length)) > 0)
{
//对bytes进行加密处理
for (int i = 0; i < readBytes; i++)
{
bytes[i] = (byte)(byte.MaxValue - bytes[i]);
}
outputStream.Write(bytes, 0, readBytes);
progressBar1.Value += readBytes;
}
Encoding.UTF8.GetString(bytes);
}
}
6、byte[]是任何数据的最根本表示形式,任何数据最终都是二进制。
7、Write用于向当前位置写入若干字节,Read用于读取若干字节。每次Read、Write指针都会自动后移。
8、文件流的Flush、Close、Dispose。
9、进度条,winform中有个专门的控件。