//using System.IO;//using System.IO.Compression;private void button1_Click(object sender, EventArgs e){Txt txt = new Txt();txt.title = textBox1.Text;txt.detail = textBox2.Text;//创建存储的文件流BinaryFormatter bf = new BinaryFormatter();using (FileStream fsWrite = new FileStream("txt.bin", FileMode.Create)) {bf.Serialize(fsWrite, txt);}BinaryFormatter binary = new BinaryFormatter();//创建读取文件的文件流using (FileStream fsRead = new FileStream("txt.bin", FileMode.Open)){//执行反序列化object obj = binary.Deserialize(fsRead);Txt pr = obj as Txt;//listBox1.Items.Add(pr.title);}//文件流的使用方式string msg = "";//将字符串转换成数组byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);//把一个byte数组转换为一个字符串string newmsg = System.Text.Encoding.UTF8.GetString(bytes);//流操作的是字节,不能直接操作字符串//通过fileStream来写文件//文件流的使用步骤FileStream fsWriteStream = new FileStream("first.txt", FileMode.Create, FileAccess.Write);//使用文件流,执行读写操作string msg2 = "sadkjfkjsaflkjas,三角阀";byte[] byts = System.Text.Encoding.UTF8.GetBytes(msg2);//写//参数1:将指定的字节数组中的内容写入到文件//参数2:参数1数组的偏移量,一般为0//参数3:本次文件写入操作要写入的字节数fsWriteStream.Write(byts, 0, byts.Length);//清空缓冲区,关闭文件流,释放资源fsWriteStream.Flush();fsWriteStream.Close();fsWriteStream.Dispose();//通过filestream来读文件using (FileStream fsRead = new FileStream("first.txt",FileMode.Open,FileAccess.Read)){//使用FileStream文件流读取文本文件的时候,不需要指定编码,因为编码实在将byte数组转换//为字符串的时候才需要使用编码。而这里是直接读取byte[],所以无需使用编码byte[] bytes1 = new byte[fsRead.Length];fsRead.Read(bytes1,0,bytes1.Length);//将byte转换字符串string msg3 = System.Text.Encoding.UTF8.GetString(bytes1);}//大文件拷贝string source = @"c:\";string target = @"d:\";BigFileCopy(source,target);}/// <summary>/// 通过文件流实现将source拷贝到target中/// </summary>/// <param name="source"></param>/// <param name="target"></param>private static void BigFileCopy(string source,string target) {//创建一个读取源文件的文件流using (FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read)) {//创建一个写入源文件的文件流using (FileStream fsWrite = new FileStream(target,FileMode.Create,FileAccess.Write)) {//拷贝文件,创建一个中间缓冲区byte[] bytes3 = new byte[1024 * 1024 * 5];//返回值表示本次实际读取到的字节数int r = fsRead.Read(bytes3,0,bytes3.Length);//将读取到的内容写入新文件中while (r > 0) {//第三个参数是读取到的字节数,而不是数组长度fsWrite.Write(bytes3,0,r);fsRead.Read(bytes3, 0, r);double d = (fsWrite.Position / (double)fsRead.Length) * 100;}}}}
//压缩private void compressTest() {//读取源文件using (FileStream fsRead = File.OpenRead("1.txt")) {//写入新文件的流using (FileStream fsWrite = File.OpenWrite("yasuo.rar")) {//创建压缩流using (GZipStream zip = new GZipStream(fsWrite,CompressionMode.Compress)) {byte[] buffer = new byte[1024 * 10];int r;while ((r = fsRead.Read(buffer,0,buffer.Length)) > 0) {zip.Write(buffer,0,r);}}}}}//解压private void deCompressTest() {//读取压缩文件using (FileStream fsRead = File.OpenRead("yssuo.rar")) {//创建压缩流using (GZipStream zip = new GZipStream(fsRead, CompressionMode.Decompress)) {using (FileStream fsWrite = File.OpenWrite("jieya.txt")) {byte[] buffer = new byte[1024 * 10];//解压读取int r;while ((r = zip.Read(buffer,0,buffer.Length)) > 0) {//写入新文件fsWrite.Write(buffer,0,r);}} }}}
private void StreamTest() {using (StreamReader reader = new StreamReader("1.txt", Encoding.Default)) {//streamReader是逐行读取文本文件//直到文件的末尾,获取一个值,该值指示当前的流位置是否在流结尾。while (!reader.EndOfStream) {reader.ReadLine();}string line = null;while ((line = reader.ReadLine()) != null) {Console.WriteLine(line);}}using (StreamWriter writer = new StreamWriter("test.txt", true, Encoding.Default)) {for (int i = 0;i < 100;i++) {writer.WriteLine(i);}}string directoryPath = @"c:\users\public\reports";//创建一个文件夹对象DirectoryInfo directorySelecter = new DirectoryInfo(directoryPath);//获取当前文件夹下的所有子文件foreach (FileInfo fileToCompress in directorySelecter.GetFiles()) {//对于每个Compress(fileToCompress);}foreach (FileInfo fileToDecompress in directorySelecter.GetFiles("*.gz")) {DeCompress(fileToDecompress);}}public static void Compress(FileInfo fileToCpmpress) {//创建一个指向当前文件fileToCompress的文件流using (FileStream originalFileStream = fileToCpmpress.OpenRead()) {if ((File.GetAttributes(fileToCpmpress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCpmpress.Extension != ".gz" ){//创建一个指向新文件的一个文件流using (FileStream compressFileStream = File.Create(fileToCpmpress.FullName + ".gz")) {using (GZipStream compressionStream = new GZipStream(compressFileStream, CompressionMode.Compress)) {//将源文件的文件流直接拷贝到压缩流中compressionStreamoriginalFileStream.CopyTo(compressionStream);Console.WriteLine("compressed{0} from {1} to {2} bytes",fileToCpmpress.Name,fileToCpmpress.Length.ToString(),compressFileStream.Length.ToString());}}}}}public static void DeCompress(FileInfo fileToCompress) {}