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 挂 ...
随机推荐
- 高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术
1.背景 1.1 高精资料采集 高精采集车是集成了测绘激光.高性能惯导.高分辨率相机等传感器为一体的移动测绘系统.高德高精团队经过多年深耕打造的采集车,具有精度高.速度快.数据产生周期短.自动化程度高 ...
- 在Windows下配置Linux远程开发环境
在Windows下配置Linux远程开发环境 欢迎光临我的个人博客 https://source.chens.life/Configure-Linux-remote-development-envir ...
- Software
Software is a bridge, acorss people, the links, and knowledge. 并非单一的产品,而是整个行业.
- 冒泡算法(BubbleSort)
/*冒泡排序原理 比较相邻的元素.如果前一个元素比后一个元素大,就交换这两个元素的位置. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素.最终最后位置的元素就是最大值.实现步骤 1 ...
- [树形DP]战略游戏
战 略 游 戏 战略游戏 战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题.他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上 ...
- PBFT共识算法详解
PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错) 一.概述 拜占庭将军问题最早是由 Leslie Lamport 在 1982 年发表的论文<T ...
- KubeEdge EdgeMesh设计原理
EdgeMesh主要用来做边缘侧微服务的互访. ServiceMesh service mesh是一个服务网格的概念.在传统的架构里面都是通过像Dubbo来进行服务治理,服务治理的程序和我们应用程序强 ...
- 这一次,彻底搞懂 Go Cond
hi,大家好,我是 haohongfan. 本篇文章会从源码角度去深入剖析下 sync.Cond.Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Cha ...
- Where is the Marble UVA - 10474
Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on th ...
- pickle json模块
pickle --- Python 对象序列化 通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储. 通过pickle模块的反序列化操作,我们能够从文件中创建上一次 ...