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. forms6 builder安装之后设置注册表开发环境

  2. hadoop编程模型

    1. 拷贝数据 将一个超大的数据文件拷贝到hadoop集群中,hdfs将其分割成多个数据块,然后再把每一个数据块放到不同的节点里面. 2. map函数 提交一个map函数,此map函数可以被jobch ...

  3. ASP.NET一些公共方法commTools

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  4. 使用storyboard创建带有navigation的界面的简单方法

    步骤1:正常创建1个新项目 步骤2:选中默认创建的viewcontroller 步骤3:选择最上面工具栏的editor->embedin->navigation controller. 同 ...

  5. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  6. Win7下VS2008编译QtiPlot

    Win7下VS2008编译QtiPlot By wangsh 2011-11-25 QtiPlot 是一款开源免费的科学绘图软件,可运行在多个平台(windows.Linux等)中,从功能上讲,Qti ...

  7. Mysql 只导出数据,不包含表结构

    mysqldump -u${user} -p${passwd} --no-create-info --database ${dbname} --table ${tablename} > ${ta ...

  8. Haskell解决逆波兰式

    摘自<Haskell趣学指南- Learn You a Haskell for Great Good> {- 逆波兰式(revese polish notation, RPN): 操作符出 ...

  9. onmouseenter与onmouseover

    简单的说: mouseenter第一次进入这个元素的某个子元素时触发.一旦触发后,在mouseleave之前,鼠标在这个元素的子元素上触发mouseenter事件,不会触发这个元素的mouseente ...

  10. ASP.NET关于Login控件使用 (转)

    分类: C# 2011-02-21 10:38 4599人阅读 评论(0) 收藏 举报 loginasp.netstringurlserverbutton 今天上网找了一些关于Login控件的使用资料 ...