IO

 <appSettings>
<!--日志路径-->
<add key="LogPath" value="E:\学习\C#进阶\fsociety\fSociety0\Logs\Log\"/>
<add key="LogMovePath" value="E:\学习\C#进阶\fsociety\fSociety0\Logs\LogMove\"/>
<!--<add key="LogPath" value="D:\ruanmou\online7\20161014Advanced7Course6IOSerialize\IOSerialize\IOSerialize\Log\"/>
<add key="LogMovePath" value="D:\ruanmou\online7\20161014Advanced7Course6IOSerialize\IOSerialize\IOSerialize\LogMove\"/>
<add key="ImagePath" value="D:\ruanmou\online7\20161014Advanced7Course6IOSerialize\IOSerialize\IOSerialize\Image\"/>-->
<add key="VerifyPath" value="D:\ruanmou\online7\20161014Advanced7Course6IOSerialize\IOSerialize\IOSerialize\Image\"/>
<add key="CurrentDataPath" value="D:\ruanmou\online7\20161014Advanced7Course6IOSerialize\IOSerialize\IOSerialize\File\"/>
</appSettings>

appSettings

         /// <summary>
/// 配置绝对路径
/// </summary>
private static string LogPath = ConfigurationManager.AppSettings["LogPath"];
private static string LogMovePath = ConfigurationManager.AppSettings["LogMovePath"];
/// <summary>
/// 获取当前程序路径
/// </summary>
private static string LogPath2 = AppDomain.CurrentDomain.BaseDirectory;
Directory
        {//Directory
bool isExists = Directory.Exists(LogPath);
if (!isExists)
{
DirectoryInfo directoryInfo = Directory.CreateDirectory(LogPath);//一次性创建全部的子路径
Directory.Move(LogPath, LogMovePath);//移动 原文件夹就不在了
Directory.Delete(LogMovePath);//删除
}
}

File

         {//File
string fileName = Path.Combine(LogPath, "log.txt");
string fileNameCopy = Path.Combine(LogPath, "logCopy.txt");
string fileNameMove = Path.Combine(LogPath, "logMove.txt");
bool isExists = File.Exists(fileName);
if (!isExists)
{
Directory.CreateDirectory(LogPath);
using (FileStream stream = File.Create(fileName))//创建文件并写入
{
string name = ""; byte[] bytes = Encoding.Default.GetBytes(name);
stream.Write(bytes, , bytes.Length);
stream.Flush();
} string msg = "今天是Course6IOSerialize,今天上课的人有26个人";
using (StreamWriter sw = File.AppendText(fileName))
{
sw.WriteLine(msg);
sw.Flush();
} foreach (string result in File.ReadAllLines(fileName))
{
Console.WriteLine(result);
}
File.ReadAllText(fileName);
File.ReadAllBytes(fileName); using (FileStream stream = File.OpenRead(fileName))//分批读取
{
int length = ;
int result = ; do
{
byte[] bytes = new byte[length];
result = stream.Read(bytes, , );
for (int i = ; i < result; i++)
{
Console.WriteLine(bytes[i].ToString());
}
}
while (length == result);
} File.Copy(fileName, fileNameCopy);
File.Move(fileName, fileNameMove);
File.Delete(fileNameCopy);
File.Delete(fileNameMove); }
}

Log

         public static void Log(string msg)
{
StreamWriter sw = null;
try
{
string fileName = "log.txt";
string totalPath = Path.Combine(LogPath, fileName);
//int i = 0; //int result = 5 / i; if (Directory.Exists(LogPath))
{
if (File.Exists(totalPath))
sw = File.AppendText(totalPath);
else
sw = File.CreateText(totalPath);
}
else
{
Directory.CreateDirectory(LogPath);
sw = File.CreateText(totalPath);
}
sw.WriteLine(string.Format("{0}:{1}", DateTime.Now, msg));
sw.WriteLine("***************************************************");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);//log
//throw ex;
//throw new exception("这里异常");
}
finally
{
if (sw != null)
{
sw.Flush();
sw.Close();
sw.Dispose();
}
}
}

Log

     public class Recursion
{
public static List<DirectoryInfo> FindAll(string rootPath)
{
List<DirectoryInfo> dirList = new List<DirectoryInfo>();
DirectoryInfo rootDirectory = new DirectoryInfo(rootPath);//
dirList.Add(rootDirectory);
FindChild(rootDirectory, dirList); return dirList;
} /// <summary>
/// 找出文件夹的子文件夹,放入集合,
/// 遍历子文件,再。。。。
/// </summary>
/// <param name="parentDirectory">文件夹</param>
/// <param name="dirList">集合</param>
private static void FindChild(DirectoryInfo parentDirectory, List<DirectoryInfo> dirList)
{
DirectoryInfo[] dirChildList = parentDirectory.GetDirectories();
dirList.AddRange(dirChildList);
if (dirChildList != null && dirChildList.Length > )//1 递归一定要有跳出条件
{
foreach (var child in dirChildList)//2 递归很耗资源
{
FindChild(child, dirList);
}
}
}
}

Recursion

         private static List<Programmer> GetProgrammerList()
{
List<Programmer> list = new List<Programmer>();
list.Add(new Programmer()
{
Name = "快乐阳光",
Sex = "男"
});
list.Add(new Programmer()
{
Name = "荼蘼",
Sex = "女"
});
list.Add(new Programmer()
{
Name = "笑对人生",
Sex = "男"
});
list.Add(new Programmer()
{
Name = "yizi",
Sex = "男"
});
list.Add(new Programmer()
{
Name = "萌萌的",
Sex = "男"
});
list.Add(new Programmer()
{
Name = "红领巾",
Sex = "男"
});
list.Add(new Programmer()
{
Name = "net",
Sex = "男"
});
return list;
}

List

Serialize

         /// <summary>
/// JavaScriptSerializer
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjectToString<T>(T obj)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(obj);
} /// <summary>
/// JavaScriptSerializer
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="content"></param>
/// <returns></returns>
public static T StringToObject<T>(string content)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Deserialize<T>(content);
} /// <summary>
/// JsonConvert.SerializeObject
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ToJson<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
} /// <summary>
/// JsonConvert.DeserializeObject
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="content"></param>
/// <returns></returns>
public static T ToObject<T>(string content)
{
return JsonConvert.DeserializeObject<T>(content);
}

JavaScriptSerializer

        public static string ToXml<T>(T t) where T : new()
{
string fileName = @"E:\online_3\20150806第三期高级班Course10SerializeJson\Course10SerializeJson\Course10SerializeJson\file\Person.xml";//文件名称与路径
using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
{
XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
xmlFormat.Serialize(fStream, t);
}
string[] lines = File.ReadAllLines(fileName);
return string.Join("", lines);
} public static T ToObject<T>() where T : new()
{
string fileName = @"E:\online_3\20150806第三期高级班Course10SerializeJson\Course10SerializeJson\Course10SerializeJson\file\Person.xml";//文件名称与路径
using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
return (T)xmlFormat.Deserialize(fStream);
}
}

XmlSerializer

         private static string CurrentDataPath = ConfigurationManager.AppSettings["CurrentDataPath"];
public static void BinarySerialize()
{
//使用二进制序列化对象
string fileName = Path.Combine(CurrentDataPath, @"BinarySerialize.txt");//文件名称与路径
using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
{
List<Programmer> pList = GetProgrammerList();
BinaryFormatter binFormat = new BinaryFormatter();//创建二进制序列化器
binFormat.Serialize(fStream, pList);
}
using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
List<Programmer> pList = new List<Programmer>();
BinaryFormatter binFormat = new BinaryFormatter();//创建二进制序列化器
//使用二进制反序列化对象
pList.Clear();//清空列表
fStream.Position = ;//重置流位置
pList = (List<Programmer>)binFormat.Deserialize(fStream);//反序列化对象
}
}

BinaryFormatter

  public static void SoapSerialize()
{
//使用Soap序列化对象
string fileName = Path.Combine(CurrentDataPath, @"SoapSerialize.txt");//文件名称与路径
using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
{
List<Programmer> pList = GetProgrammerList();
SoapFormatter soapFormat = new SoapFormatter();//创建二进制序列化器
//soapFormat.Serialize(fStream, list);//SOAP不能序列化泛型对象
soapFormat.Serialize(fStream, pList.ToArray());
}
using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
SoapFormatter soapFormat = new SoapFormatter();//创建二进制序列化器
//使用二进制反序列化对象
fStream.Position = ;//重置流位置
List<Programmer> pList = ((Programmer[])soapFormat.Deserialize(fStream)).ToList();//反序列化对象
}
}

SoapFormatter

         public static void XmlSerialize()
{
//使用XML序列化对象
string fileName = Path.Combine(CurrentDataPath, @"Student.xml");//文件名称与路径
using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
{
List<Programmer> pList = GetProgrammerList();
XmlSerializer xmlFormat = new XmlSerializer(typeof(List<Programmer>));//创建XML序列化器,需要指定对象的类型
xmlFormat.Serialize(fStream, pList);
}
using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
List<Programmer> pList = new List<Programmer>();
XmlSerializer xmlFormat = new XmlSerializer(typeof(List<Programmer>));//创建XML序列化器,需要指定对象的类型
//使用XML反序列化对象
fStream.Position = ;//重置流位置
pList = (List<Programmer>)xmlFormat.Deserialize(fStream);
}
}

XmlSerializer

IO&Seralize的更多相关文章

  1. VS2015编译GEOS

    下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...

  2. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  3. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  4. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  5. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  6. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

  7. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  8. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  9. Performance Monitor4:监控SQL Server的IO性能

    SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...

随机推荐

  1. 【HTML】心愿墙 Demo展示

    这是跟着一个大神做的心愿墙,当时觉得有趣,现在清理磁盘中,所以就放到博客园中进行保存. 效果如下: 下载地址:点击下载

  2. UOJ #148. 【NOIP2015】跳石头 二分

    #148. [NOIP2015]跳石头 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/148 Descripti ...

  3. 安卓Activity界面切换添加动画特效

    在Android 2.0之后有了overridePendingTransition() ,其中里面两个参数,一个是前一个activity的退出两一个activity的进入, @Override pub ...

  4. JAVA反射机制学�

    JAVA反射机制:对于随意一个类,都可以知道这个类的全部属性和方法:对于随意一个对象,都可以调用它的随意一个方法和属性:这样的动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. J ...

  5. ios开发——实用技术篇Swift篇&加速计和陀螺仪

    加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...

  6. python selenium自动化(三)Chrome Webdriver的兼容

    当一个自动化测试被实现在一个浏览器之后,我们会希望我们的测试能够覆盖到尽量多的别的浏览器.通过跨平台的测试来保证我们的程序在多个浏览器下都能正常工作. 在安装了selenium之后,firefox w ...

  7. XCode帮助文档离线下载解决办法

    1.菜单栏Xcode->Preferences选择Documentation,在线下载 2.离线下载(用迅雷即可下载) 在上述在线下载列表中,点击某一列,下拉框可看见 info,可得到其网络所在 ...

  8. 网络IPC:套接字之套接字选项

    套接字机制提供两个套接字选项接口来控制套接字的行为.一个接口用来设置选项,另一个接口允许查询一个选项的状态.可以获取或设置的三种选项: (1)通用选项,工作在所有套接字类型上. (2)在套接字层次管理 ...

  9. 使用JS制作一个鼠标可拖的DIV(三)——移动带图片DIV

    当DIV元素里,存在图片元素的时候,会使拖动出现异常. 因为图片元素本身就支持拖动,所以,只要在图片标签加入:draggable='false'. 如下: <div onmousedown=&q ...

  10. Linux学习之路:变量值的删除、替代和替换

    一.删除 var为变量名, ${var#v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最短的部分删除 ${var##v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最长的部分删除 ${v ...