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);
} }
}
IO系列测试源码的更多相关文章
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...
- Spring Ioc源码分析系列--Ioc源码入口分析
Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- Java IO 之 OutputStream源码
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- Slurm任务调度系统部署和测试(源码)(1)
1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...
随机推荐
- 2019 GDUT Rating Contest II : Problem G. Snow Boots
题面: G. Snow Boots Input file: standard input Output file: standard output Time limit: 1 second Memory ...
- 前端性能监控之performance
如果我们想要对一个网页进行性能监控,那么使用window.performance是一个比较好的选择. 我们通过window.performance可以获取到用户访问一个页面的每个阶段的精确时间,从而对 ...
- Python-生成器
创建生成器 创建生成器需要两部步骤 定义一个包含yield语句的函数 调用第一步创建的函数得到生成器 def test(val,step): 2 print("函数开始执行") 3 ...
- Shell十三问更新总结版 -- 什么叫做 Shell?-- Shell十三问<第一问>
Shell十三问更新总结版 简介 ChinaUnix 论坛 Shell 版名为網中人的前辈于 2004 年发布的精华贴,最近回炉这块内容,觉得很多东西讲的实在透彻,非常感谢前辈網中人,同时我个人也对这 ...
- 前端er必须知道的Git地址及常用工具地址
商城篇(找工作必练) 开源商城 推荐指数:5星,掌握了它,可以说,今后工作中的各种需求都不是问题,工作1~2年的也可以学习其中的思路(建议收藏). 这是一个集小程序/公众号/app为一体的商城系统,包 ...
- [2020年10月28日普级组]1405.小B浇花
区 间 和 的 和 区间和的和 区间和的和 题目解析 就直接模拟,从最低的花的高度向最高的花的高度枚举,如果当循环变量的值到达了顶峰,但还有花的数量大于2的,就把循环上线加一(所以数组要开大些) Co ...
- 学习笔记-vue 打包去#和页面空白问题
文件资源路径是对的,但是页面空白.百度了很久找了一篇文章解决了. 1.vue项目中config文件下index.js中打包配置 build: { // Template for index.html ...
- 不想eject,还咋修改create-react-app的配置?
一.先抛问题 许多刚开始接触create-react-app框架的同学,不免都会有个疑问:如何在不执行eject操作的同时,修改create-react-app的配置.今天胡哥就来带大家一起来看看这个 ...
- Webpack的基本配置和打包与介绍(二)
1. 前言 在上一章中我们学习到了webpack的基本安装配置和打包,我们这一章来学学如何使用loader和plugins 如果没看第一章的这里有传送门 2. Loader 2.1 什么是loader ...
- Linux就该这么学:重定向,管道符,通配符,转义符,环境变量
第三章:重定向,管道符,环境变量 3.1 输入输出重定向 定义:输入重定向是指将文件导入命令中,输出重定向是指将原本显示到屏幕的信息输出问文件.相较于输入重定向,输出重定向使用的更多,下面重点介绍输出 ...