/// <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. 【转】Vim速查表-帮你提高N倍效率

    Vim速查表-帮你提高N倍效率 转自:https://www.jianshu.com/p/6aa2e0e39f99 去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. ...

  2. linux CPU动态调频【转】

    转自:https://www.xuebuyuan.com/2185926.html 针对sep4020的linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时 ...

  3. Redis 通过 info 查看信息和状态

    INFO INFO [section] 以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值. 通过给定可选的参数 section ,可以让命令只返回某一部分 ...

  4. 【转】采用dlopen、dlsym、dlclose加载动态链接库

    1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主控制逻辑不变,将各个业务以动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...

  5. python操作三大主流数据库(13)python操作redis之新闻项目实战①新闻数据的导入

    1.新闻处理页面redis_news.py #coding:utf-8 import math import redis class RedisNews(object): def __init__(s ...

  6. Git如何克隆远程仓库

    1.首先选择一个合适的地方创建一个空目录 mkdir learngit     2.通过git Init命令把这个目录变成git可以管理的仓库,瞬间git就把仓库建好了 3.将编写的文件放到 lear ...

  7. docker的安装及使用

    准备工具: 系统:ubuntu18.04 docker软件包:docker-compose.tar.gz,containerd.io_1.2.4-1_amd64.deb,docker-ce-cli_1 ...

  8. cocos2dx-lua 延迟调用函数和定时器

    下面是cocos官方的方法. function performWithDelay(node, callback, delay) local delay = cc.DelayTime:create(de ...

  9. lua内存监测和回收

    以下来自书籍<Cocos2d-x之Lua核心编程> 1.----------------------------------------- 若想查看程序当前的内存占用情况,可以使用Lua提 ...

  10. 通过设置ie的通过跨域访问数据源,来访问本地服务

    1.首先设置通过域访问数据源 设置通过域访问数据源 2.javascript脚本ajax使用本地服务登录(评价,人证的类似)接口 <html> <head> <scrip ...