IO系列测试源码
//IO系列测试源码(需要自取)
using System; using System.CodeDom; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IO { class Program { static void Main(string[] args) { #region File // FileStream fs= File.Create("demo.txt"); // if(File.Exists("demo.txt")) // Console.WriteLine("demo.txt文件已创建"); // fs.Close(); //// File.Move("demo1.txt","demo1.txt"); // File.Delete("demo.txt"); #endregion #region Directory //Directory.CreateDirectory("Test"); //var dirs = Directory.GetFileSystemEntries("Test"); //foreach (var dir in dirs) //{ // Console.WriteLine(dir); //} #endregion #region FileInfo //FileInfo fi = new FileInfo(@"./demo.txt"); //if (fi.Exists) //{ // Console.WriteLine(fi.Name); // Console.WriteLine(fi.Attributes); // fi.Attributes = FileAttributes.Archive; // Console.WriteLine(fi.CreationTime); // Console.WriteLine(fi.CreationTimeUtc); // Console.WriteLine(fi.Extension); // Console.WriteLine(fi.FullName); // Console.WriteLine(fi.LastAccessTime); // Console.WriteLine(fi.LastAccessTimeUtc); // Console.WriteLine(fi.LastWriteTime); // Console.WriteLine(fi.LastWriteTimeUtc); // DirectoryInfo directoryInfo = fi.Directory; // Console.WriteLine(fi.DirectoryName); // Console.WriteLine(fi.IsReadOnly); // Console.WriteLine(fi.Length); //} #endregion #region DirectryInfo //DirectoryInfo di=new DirectoryInfo("./"); //DirectoryInfo parent = di.Parent; //DirectoryInfo root = di.Root; //Console.WriteLine(di.FullName); //Console.WriteLine(parent.FullName); //Console.WriteLine(root.FullName); #endregion #region Stream ////读取数据并展示 //FileStream fs = new FileStream("./demo.txt", FileMode.Open, FileAccess.Read); ////fs.Seek(5, SeekOrigin.Begin); //int len, i = 0; ////存放每次读取的数据 //byte[] buffer = new byte[5]; ////存放所有读到的数据,最后将其转换为字符串 //byte[] data = new byte[fs.Length]; ////循环读取文件 //while ((len = fs.Read(buffer, 0, buffer.Length)) != 0) //{ // for (int j = 0; j < len; j++) // { // data[i++] = buffer[j]; // } //} //Console.WriteLine(Encoding.UTF8.GetChars(data)); ////数据写入 //FileStream write = new FileStream("./demo_copy.txt", FileMode.Create, FileAccess.Write); ////重置指针 //fs.Seek(0, SeekOrigin.Begin); //while ((len = fs.Read(buffer, 0, buffer.Length)) != 0) //{ // write.Write(buffer, 0, len); //} //fs.Dispose(); //write.Dispose(); ////读取数据并展示 //FileStream fs = new FileStream("./demo.txt", FileMode.Open, FileAccess.Read); ////fs.Seek(5, SeekOrigin.Begin); //int len, i = 0; ////存放每次读取的数据 //byte[] buffer = new byte[5]; ////存放所有读到的数据,最后将其转换为字符串 //byte[] data = new byte[fs.Length]; ////循环读取文件 //while ((len = fs.Read(buffer, 0, buffer.Length)) != 0) //{ // for (int j = 0; j < len; j++) // { // data[i++] = buffer[j]; // } //} //Console.WriteLine(Encoding.UTF8.GetChars(data)); ////数据写入 //FileStream write = new FileStream("./demo_copy.txt", FileMode.Create, FileAccess.Write); ////重置指针 //fs.Seek(0, SeekOrigin.Begin); //while ((len = fs.Read(buffer, 0, buffer.Length)) != 0) //{ // write.Write(buffer, 0, len); //} //fs.Dispose(); //write.Dispose(); #endregion #region StreamReader & StreamWriter //FileStream fs = new FileStream("./demo.txt", FileMode.Open, FileAccess.ReadWrite); //StreamReader sr=new StreamReader(fs,true); //StreamWriter sw=new StreamWriter("./demo_copy.txt"); //string data=String.Empty; //while ((data=sr.ReadLine())!=null) //{ // Console.WriteLine(data); // sw.WriteLine(data); //} //fs.Dispose(); //sw.Dispose(); //sr.Dispose(); #endregion #region 异步操作 //FileStream fs = new FileStream("./demo.txt", FileMode.Open, FileAccess.Read); //Task<string> file = ReadFile(fs); //file.ContinueWith(t => //{ // Console.WriteLine(t.Result); //}); #endregion #region 压缩文件 //目标文件 StreamReader sr=new StreamReader("./demo.txt"); //压缩后文件 FileStream fw=new FileStream("./demo_zip.txt.zip",FileMode.OpenOrCreate,FileAccess.Write); //基于FileStream创建压缩对象 GZipStream gs=new GZipStream(fw,CompressionMode.Compress); //写入压缩后的数据 StreamWriter sw=new StreamWriter(gs); string data=string.Empty; while ((data=sr.ReadLine())!=null) { sw.Write(data); } //必须关闭写入对象,否则会导致压缩文件失败 sw.Close(); #endregion Console.ReadKey(); } private async static Task<string> ReadFile(FileStream fs) { int len, i = 0; byte[] buffer = new byte[5]; byte[] data = new byte[fs.Length]; while ((len =await fs.ReadAsync(buffer, 0, buffer.Length)) != 0) { for (int j = 0; j < len; j++) { data[i++] = buffer[j]; } } return Encoding.UTF8.GetString(data); } } }