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. Android 网络连接判断与处理

    Android网络连接判断与处理  获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ...

  2. 【转】NGUI版虚拟摇杆

    http://blog.csdn.net/anyuanlzh/article/details/40107577 下面是我用nui实现的一个虚拟摇杆. 1,示图 2.代码如下,都有比较详细的注释,就不说 ...

  3. Simple Web Example

    eclipse3.7 运行一个简单的servlet,Target Platfrom 必要的jar为 0 ACTIVE      org.eclipse.osgi_3.7.2.v20120110-141 ...

  4. SQLServer2008:助您轻松编写T-SQL存储过程(原创)【转】

      本文主要介绍 SQLServerExpress2008不用第三方工具调试T-SQL语句,经过本文的介绍,用SQLSERVER2008 Manage studio 编写.调试T-SQL存储过程都将是 ...

  5. html之内联元素与块状元素;

    html之内联元素与块状元素 一.html之内联元素与块状元素 1.块状元素一般比较霸道,它排斥与其他元素位于同一行内.比如div,并且width与height对它起作用. 2.内联元素只能容纳文本或 ...

  6. 冒泡排序与插入排序(C#实现)

    本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...

  7. Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

    介绍 用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的. Qt原先是奇趣科技TM(Trolltech)的产品,由Haav ...

  8. js实现表格信息的删除和添加

    制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. 点击删除按钮 ...

  9. 【C++】动态内存与智能指针

    C++常见的内存分配方式有三种: 从静态存储区分配,这里主要是存储局部static对象,类的static成员以及定义在函数之外的变量: 从栈内存分配,这里主要是存储函数内的非static对象: 从堆内 ...

  10. backgroundworker的应用

    一种情况是当凭证界面加载时,因为加载项比较多,辅助项的处理,可以应用backgroundworker启用另一线程进行加载,不影响当前界面的显示,提高响应速度. 情况2 是月末结转余额时,因为用时间较长 ...