C#:IO
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 sr =
new
StreamReader(address +
"/Menu.ini"
);
while
(sr.Peek()>=0)
{
string
str = sr.ReadLine();
}
sr.Close();
C#:IO的更多相关文章
- 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...
- 泛函编程(38)-泛函Stream IO:IO Process in action
在前面的几节讨论里我们终于得出了一个概括又通用的IO Process类型Process[F[_],O].这个类型同时可以代表数据源(Source)和数据终端(Sink).在这节讨论里我们将针对Proc ...
- 泛函编程(32)-泛函IO:IO Monad
由于泛函编程非常重视函数组合(function composition),任何带有副作用(side effect)的函数都无法实现函数组合,所以必须把包含外界影响(effectful)副作用不纯代码( ...
- SQL Server 2014 新特性:IO资源调控
谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 2014-07-01 10:19 by 听风吹雨, 570 阅读, 16 评论, 收藏, 收藏 一.本文所涉及 ...
- Java NIO:IO与NIO的区别
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...
- 字节输入流:io包中的InputStream为所有字节输入流的父类。
字节输入流:io包中的InputStream为所有字节输入流的父类. Int read();读入一个字节(每次一个): 可先使用new byte[]=数组,调用read(byte[] b) read ...
- 14:IO之字符字节流
字节流: InputStream OutputStream 字节流: FileInputStream FileOutputStream BufferedInputStream Buffer ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- Java网络编程和NIO详解3:IO模型与Java网络编程模型
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...
- Java NIO:IO与NIO的区别 -阿里面试题
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...
随机推荐
- excel15个技巧
自动定时保存Excel中的文件 点击“工具”菜单“自动保存”项,设置自动保存文件夹的间隔时间.如果在“工具”菜单下没有“自动保存”菜单项,那么执行“工具”菜单下“加载宏…”选上“自动保存”,“确定”. ...
- 数据库主键跟外键+修改mysql的密码
update myspl.user set password=PASSWORD(设置的密码) where user='root'; 如果修改错误:先执行use mysple;再重复上面的代码. 一. ...
- SqlServer中的一些非常用功能
1.启用双引号作为分隔符 Set Quoted_Identifier on 此时:create table dbo.testcolumn("column" char(2))是合法的 ...
- 介绍UDF,以及完成大小写的转换
一:概述 1.UDF 用户自定义函数,用java实现自定义的需求 2.UDF的类型 udf:一进一出 udaf:多进一出 udtf:一进多出 3.udf的实现步骤 继承UDF类 实现evaluate的 ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- shell 使用for循环 启动后台任务
为了统计多天的数据并按照天为文件名输出,写了脚本,脚本可以统计单天的数据.为了实现多天的同时进行采用 启动多个进程后台执行形式: 但是直接 执行的参数后面加上& 并不能解决,采用 echo & ...
- Java学习-002-Java初识
此文主要讲述什么是 Java,以及 Java 常识性知识,方便亲们进一步了解 Java 语言相关的常识. 一.Java 概述 Java 语言是美国 Sun Microsystems 公司于 1995 ...
- 网页加载图片问题 插件lazyload
有些项目的,是满屏的背景图片 ,导致页面加载的速度,有简单处理的方法有两个: 1.将背景分割成几分
- Linux就这个范儿 第10章 生死与共的兄弟
Linux就这个范儿 第10章 生死与共的兄弟 就说Linux系统的开机.必须经过加载BIOS.读取MBR.Boot Loader.加载内核.启动init进程并确定运行等级.执行初始化脚本.启动内核模 ...
- MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...