/// <summary>

/// 文件夹  文件管理

/// </summary>

public class MyIO

{
     /// <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;

/// <summary>
     /// 读取文件夹  文件信息
     /// </summary>
     public static void Show()
     {
         {//check
             if (!Directory.Exists(LogPath))//检测文件夹是否存在
             {

}
             DirectoryInfo directory = new DirectoryInfo(LogPath);//不存在不报错  注意exists属性
             Console.WriteLine(string.Format("{0} {1} {2}", directory.FullName, directory.CreationTime, directory.LastWriteTime));

if (!File.Exists(Path.Combine(LogPath, "info.txt")))
             {
             }

FileInfo fileInfo = new FileInfo(Path.Combine(LogPath, "info.txt"));

Console.WriteLine(string.Format("{0} {1} {2}", fileInfo.FullName, fileInfo.CreationTime, fileInfo.LastWriteTime));
         }
         {//Directory
             if (!Directory.Exists(LogPath))
             {
                 DirectoryInfo directoryInfo = Directory.CreateDirectory(LogPath);//一次性创建全部的子路径
                 Directory.Move(LogPath, LogMovePath);//移动  原文件夹就不在了
                 Directory.Delete(LogMovePath);//删除
             }
         }
         {//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 fileStream = File.Create(fileName))//打开文件流 (创建文件并写入)
                 {
                     string name = "12345567778890";
                     byte[] bytes = Encoding.Default.GetBytes(name);
                     fileStream.Write(bytes, 0, bytes.Length);
                     fileStream.Flush();
                 }
                 using (FileStream fileStream = File.Create(fileName))//打开文件流 (创建文件并写入)
                 {
                     StreamWriter sw = new StreamWriter(fileStream);
                     sw.WriteLine("1234567890");
                     sw.Flush();
                 }

using (StreamWriter sw = File.AppendText(fileName))//流写入器(创建/打开文件并写入)
                 {
                     string msg = "今天是Course6IOSerialize,今天上课的人有55个人";
                     sw.WriteLine(msg);
                     sw.Flush();
                 }
                 using (StreamWriter sw = File.AppendText(fileName))//流写入器(创建/打开文件并写入)
                 {
                     string name = "0987654321";
                     byte[] bytes = Encoding.Default.GetBytes(name);
                     sw.BaseStream.Write(bytes, 0, bytes.Length);
                     sw.Flush();
                 }

foreach (string result in File.ReadAllLines(fileName))
                 {
                     Console.WriteLine(result);
                 }
                 string sResult = File.ReadAllText(fileName);
                 Byte[] byteContent = File.ReadAllBytes(fileName);
                 string sResultByte = System.Text.Encoding.UTF8.GetString(byteContent);

using (FileStream stream = File.OpenRead(fileName))//分批读取
                 {
                     int length = 5;
                     int result = 0;

do
                     {
                         byte[] bytes = new byte[length];
                         result = stream.Read(bytes, 0, 5);
                         for (int i = 0; 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);//尽量不要delete
             }
         }

{//DriveInfo
             DriveInfo[] drives = DriveInfo.GetDrives();

foreach (DriveInfo drive in drives)
             {
                 if (drive.IsReady)
                     Console.WriteLine("类型:{0} 卷标:{1} 名称:{2} 总空间:{3} 剩余空间:{4}", drive.DriveType, drive.VolumeLabel, drive.Name, drive.TotalSize, drive.TotalFreeSpace);
                 else
                     Console.WriteLine("类型:{0}  is not ready", drive.DriveType);
             }

}

{
             Console.WriteLine(Path.GetDirectoryName(LogPath));  //返回目录名,需要注意路径末尾是否有反斜杠对结果是有影响的
             Console.WriteLine(Path.GetDirectoryName(@"d:\\abc")); //将返回 d:\
             Console.WriteLine(Path.GetDirectoryName(@"d:\\abc\"));// 将返回 d:\abc
             Console.WriteLine(Path.GetRandomFileName());//将返回随机的文件名
             Console.WriteLine(Path.GetFileNameWithoutExtension("d:\\abc.txt"));// 将返回abc
             Console.WriteLine(Path.GetInvalidPathChars());// 将返回禁止在路径中使用的字符
             Console.WriteLine(Path.GetInvalidFileNameChars());//将返回禁止在文件名中使用的字符
             Console.WriteLine(Path.Combine(LogPath, "log.txt"));//合并两个路径
         }
     }

/// <summary>
     /// 关于异常处理:(链接:http://pan.baidu.com/s/1kVNorpd 密码:pyhv)
     /// 1  try catch旨在上端使用,保证对用户的展示
     /// 2  下端不要吞掉异常,隐藏错误是没有意义的,抓住再throw也没意义
     /// 3  除非这个异常对流程没有影响或者你要单独处理这个异常
     /// </summary>
     /// <param name="msg"></param>
     public static void Log(string msg)
     {
         StreamWriter sw = null;
         try
         {
             string fileName = "log.txt";
             string totalPath = Path.Combine(LogPath, fileName);

if (!Directory.Exists(LogPath))
             {
                 Directory.CreateDirectory(LogPath);
             }
             sw = File.AppendText(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();
             }
         }
     }

}

学习笔记: IO操作及序列化的更多相关文章

  1. Java学习笔记——IO操作之对象序列化及反序列化

    对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...

  2. Java学习笔记——IO操作之以图片地址下载图片

    以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...

  3. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

  4. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  5. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  6. AI学习---数据IO操作&神经网络基础

    数据IO操作 TF支持3种文件读取:    1.直接把数据保存到变量中    2.占位符配合feed_dict使用    3. QueueRunner(TF中特有的) 文件读取流程 文件读取流程(多线 ...

  7. python学习笔记 IO 文件读写

    读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...

  8. Java 学习笔记 IO流与File操作

    可能你只想简单的使用,暂时不想了解太多的知识,那么请看这里,了解一下如何读文件,写文件 读文件示例代码 File file = new File("D:\\test\\t.txt" ...

  9. java学习笔记--IO流

    第十二章大纲: I/O input/output 输入/输出 一.创建文件,借助File类来实现 file.createNewFile() : 创建文件 file.exists() : 判断文件是否存 ...

随机推荐

  1. LwIP Application Developers Manual2---Protocols概览

    1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络 ...

  2. 利用Linux系统生成随机密码的10种方法【转】

    Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日期,并输出结 ...

  3. 题解-BOI 2004 Sequence

    Problem bzoj & Luogu 题目大意: 给定序列\(\{a_i\}\),求一个严格递增序列\(\{b_i\}\),使得\(\sum \bigl |a_i-b_i\bigr|\)最 ...

  4. linux mount -t -o 用法

    挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式: mount [-t vfstype] [-o optio ...

  5. 构造函数中base与this的区别

    base是对父类的引用,而this是对类本身的引用. namespace ConsoleApplication1 { public class BaseClass { private string n ...

  6. MS SQL Server 增删改查

    数据插入 语法:INSERT INTO Table_name(field1,field2……fieldN) values(value1,vlaue2,…valueN) 单行插入用户类型 INSERT ...

  7. 最新手机号码验证正则表达式(PHP版本)

    1 前言 手机号码是否合规,则需要校验,可以使用正则表达式. 2 代码 function checkPhoneNumberValidate($phone_number){ //@2017-11-25 ...

  8. servlet web.xml配置选项详解

    一般的web工程中都会用到web.xml,web.xml主要包括一些配置标签,例如Filter.Listener.Servlet等,可以用来预设容器的配置,可以方便的开发web工程.但是web.xml ...

  9. python HTML报告

    http://www.cnblogs.com/puresoul/p/7490737.html # coding:utf-8import timeimport unittestimport HTMLTe ...

  10. Guideline 5.2.1 - Legal - Intellectual Property 解决方案

    最近在上架公司公司项目的时候遇到这个问题什么5.2.1 然后去了解发现最近不少人都遇到了这个问题.先说一下 我上架的APP是一个医疗的APP然后说需要什么医疗资质,估计是账号的公司资质不够吧.后面和苹 ...