//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);
} }
}

IO系列测试源码的更多相关文章

  1. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  2. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  5. [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...

  6. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  7. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  8. Java IO 之 OutputStream源码

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  9. Slurm任务调度系统部署和测试(源码)(1)

    1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...

随机推荐

  1. linux安装mysql8.0

    linux 上安装mysql8.0 mysql版本8.0.16 MySQL Community 操作系统centos7 准备工作: mysql8.0 rpm文件 安装步骤: 1. 下载mysql的re ...

  2. Ajax数据爬取--爬取微博

    Ajax Ajax,即异步的JaveScript和XML.它不是一门编程语言,而是利用JaveScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据并更新部分网页的技术. 对于传统的网 ...

  3. 【odoo14】第二十三章、管理邮件

    邮件集成是odoo最重要的特性.我们可以通过odoo收发邮件.我们甚至可以管理业务文档上的电子邮件,如潜在客户.销售订单和项目.本章,我们将探讨在odoo中处理邮件的方式. 配置邮件服务器 管理文档中 ...

  4. Java学习之浅析高内聚低耦合

    •前言 如果你涉及软件开发,可能会经常听到 "高内聚,低耦合" 这种概念型词语. 可是,何为 "高内聚,低耦合" 呢? •概念 "高内聚,低耦合&qu ...

  5. java进阶(38)--线程安全

    文档目录: 一.概念 二.解决方案 三.举例说明 ---------------------------------------分割线:正文------------------------------ ...

  6. js--如何实现继承?

    前言 学习过 java 的同学应该都知道,常见的继承有接口继承和实现继承,接口继承只需要继承父类的方法签名,实现继承则继承父类的实际的方法,js 中主要依靠原型链来实现继承,无法做接口继承. 学习 j ...

  7. 日志文件删除shell脚本

    大日志文件切割shell脚本 #!/bin/bash # --------------------------------------------------------------------- # ...

  8. java面试-JDK自带的JVM 监控和性能分析工具用过哪些?

    一.JDK的命令行工具 1.jps(JVM Process Status Tools):虚拟机进程状况工具 jps -l 2.jinfo(Configuration Info for java):Ja ...

  9. HTML5和CSS3 PC端静态网页琐碎知识点

    1.PC端为了兼容IE9以及IE9以下,尽量要使用float进行布局,兼容性好,一般不要用flex进行布局. 2.问起CSS选择器的分类,先说id选择器,类选择器,属性选择器,伪类选择器,伪元素选择器 ...

  10. 比较运算规则 == 、 ===、Object.is 和 ToPrimitive 方法 [[DefaultValue]] (hint)

    1.== 相等运算符 如果 x 与 y 类型一致时规则如下: 1. 如果 x 类型为 Undefined,返回 true. 2. 如果 x 类型为 Null,返回 true. 3. 如果 x 类型为 ...