1. File和Directory类

这两个类属于静态类,经常用到的比如File.Exists(string path), Directory.Exists(string path), Directory.GetCurrentDirectory(), Directory.SetCurrentDirectory(string path);

另外还有FileInfo和DirectoryInfo类,属于实例类,用法跟File和Directory差不多,就是要先实例化出来

当单一调用的时候优先用File和Directory类,如果操作很多,则用FileInfo和DirectoryInfo类会更好

2. FileStream类

用于指向文件的流操作,读写文档没StreamReader和StreamWriter方便

当然FileStream类最牛逼的地方在于Seek(long offset, SeekOrigin)这个方法

FileStream(string fileName, FileMode);

FileStream(string fileName, FileMode, FileAccess);

     public enum FileMode
     {
         Append,
         Create,
         CreateNew,
         Open,
         OpenOrCreate,
         Truncate
     }

public enum FileMode

     public enum FileAccess
     {
         Read,
         ReadWrite,
         Write
     }

public enum FileAccess

3. FileWriter

虽然FileWriter能够直接对文件写入,但是没有更多选项,所以一般要先创建一个FileStream,再创建FileWriter

4.FileReader

与FileWriter一样,但是FileStream的FileMode要改改

Read的时候可能会有文件不存在的BUG,所以要么加上try..catch,要么先判断exists

5. Path类

静态类,主要有GetDirectoryName和GetFileName两个方法

下面这段代码集成了上面的内容

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using MySql.Data;
 using MySql.Data.Entity;
 using MySql.Data.MySqlClient;
 using System.IO;

 namespace test4
 {
     class Program
     {
         const string FILE = @"C:\Users\Administrator\Desktop\test.txt";
         const string DIRECTORY = @"C:\Users\Administrator\Desktop\";
         static void Main(string[] args)
         {
             if (File.Exists(FILE))
             {
                 Console.WriteLine("test.txt exist on desktop");
             }
             if (Directory.Exists(DIRECTORY))
             {
                 Console.WriteLine("Desktop directory exists");
             }
             Console.WriteLine(Directory.GetCurrentDirectory());
             Console.WriteLine(Path.GetDirectoryName(FILE));
             Console.WriteLine(Path.GetFileName(FILE));
             //FileStream fst = File.OpenRead(FILE);
             //StreamWriter sw = new StreamWriter(FILE, true);
             FileStream fst = new FileStream(FILE, FileMode.Append | FileMode.OpenOrCreate);
             StreamWriter sw = new StreamWriter(fst);
             sw.WriteLine("xueyiyi");
             sw.Close();
             fst.Close();
             //try
             //{
             //    fst = new FileStream(FILE, FileMode.Open);
             //    StreamReader sr = new StreamReader(fst);
             //    string str;
             //    while ((str = sr.ReadLine()) != null)
             //    {
             //        Console.WriteLine(str);
             //    }
             //    sr.Close();
             //    fst.Close();
             //}
             //catch (IOException e)
             //{
             //    Console.WriteLine("An IO exception has been thrown!");
             //    Console.WriteLine(e.ToString());
             //    return;
             //}
             if (File.Exists(FILE))
             {
                 fst = new FileStream(FILE, FileMode.Open);
                 StreamReader sr = new StreamReader(fst);
                 string str;
                 while ((str = sr.ReadLine()) != null)
                 {
                     Console.WriteLine(str);
                 }
                 sr.Close();
                 fst.Close();
             }
             else
             {
                 Console.WriteLine(FILE + " does not exist");
             }
         }
     }
 }

用StreamWriter类可以简单实现文件写入

StreamWriter s = new StreamWriter(address + "/Menu.ini", true);
s.WriteLine(openFileDialog1.FileName);
s.Flush();
s.Close();
 
StreamReader简单实现读文件
StreamReader sr = new StreamReader(address + "/Menu.ini");
while (sr.Peek()>=0)
{
     string str = sr.ReadLine();
}
sr.Close();

C#:IO的更多相关文章

  1. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  2. 泛函编程(38)-泛函Stream IO:IO Process in action

    在前面的几节讨论里我们终于得出了一个概括又通用的IO Process类型Process[F[_],O].这个类型同时可以代表数据源(Source)和数据终端(Sink).在这节讨论里我们将针对Proc ...

  3. 泛函编程(32)-泛函IO:IO Monad

    由于泛函编程非常重视函数组合(function composition),任何带有副作用(side effect)的函数都无法实现函数组合,所以必须把包含外界影响(effectful)副作用不纯代码( ...

  4. SQL Server 2014 新特性:IO资源调控

    谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 2014-07-01 10:19 by 听风吹雨, 570 阅读, 16 评论, 收藏, 收藏 一.本文所涉及 ...

  5. Java NIO:IO与NIO的区别

    一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...

  6. 字节输入流:io包中的InputStream为所有字节输入流的父类。

    字节输入流:io包中的InputStream为所有字节输入流的父类. Int read();读入一个字节(每次一个): 可先使用new  byte[]=数组,调用read(byte[] b) read ...

  7. 14:IO之字符字节流

    字节流: InputStream     OutputStream  字节流:  FileInputStream FileOutputStream BufferedInputStream Buffer ...

  8. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  9. Java网络编程和NIO详解3:IO模型与Java网络编程模型

    Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...

  10. Java NIO:IO与NIO的区别 -阿里面试题

    一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...

随机推荐

  1. 把Java程序打包成jar文件包并执行

    1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: 1.在项目上,右键,选择Export. ...

  2. 我的第一个chrome扩展(1)——读样例,实现时钟

    学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...

  3. 通过IP获得IP所在地的三个接口

    http://ip.qq.com/cgi-bin/searchip?searchip1=180.168.144.211 http://ip.taobao.com/service/getIpInfo.p ...

  4. Linux最常用命令及快捷键整理

    最近在学Linux系统命令,在阿里云买了一台linux服务器.为方便自己也方便他人,整理了Linux常用命令及快捷键. 用命令: 文件和目录: # cd /home                   ...

  5. SQL 2008 RAISERROR语法在SQL 2012/2014不兼容问题

    原文 旧的RAISERROR语法在SQL 2012不兼容问题 raiserror 写法: SQL 2008: raiserror 55030 'text error' SQL 2012: raiser ...

  6. [LeetCode]题解(python):111 Minimum Depth of Binary Tree

    题目来源 https://leetcode.com/problems/minimum-depth-of-binary-tree/ Given a binary tree, find its minim ...

  7. OO之美2

    面向对象并没有想象中那么神秘,以生活的现实眼光来看更是如此.把面向对象深度浓缩起来,可以概括为: ⑴目标:重用,扩展,兼容 ⑵核心:低耦合,高内聚 ⑶手段:封装变化 ⑷思想:面向接口编程,面向抽象编程 ...

  8. JQuery:JQuery捕获HTML

    JQuery:捕获HTML1.jQuery - 获取内容和属性介绍: jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuer ...

  9. ubuntu 更新 rtl8192cu 驱动

    ubuntu 更新 rtl8192cu 驱动 手上有个 tplink wr823n 的 usb 无线网卡,在 windows 下工作正常,但在 linux 上的比较差,速度没有 windows 上的快 ...

  10. mysql -B 恢复与不加

    -B 跟--database 意义一样 在默认不指定库时候 连续名称,只有第一个名称为库名,后面的都为表名 而使用 -B 或者 --database 之后 所有的名 都是库名 1 导出单个库时候加了- ...