关于IO简介
.NET中的IO操作,经常需要调用一下几个类。
clipboard[] .FileStream类
文件流类,负责大文件的拷贝,读写。
.Path类
Path类中方法,基本都是对字符串(文件名)的操作,与实际文件没多大关系。
.File类
File类可以进行一些对小文件拷贝、剪切操作,还能读一些文档文件。
.Dirctory
目录操作,创建文件、删除目录,获取目录下文件名等等。
Path类
.ChangeExtension(path,".jpg")
改变文件后缀名!
.Combine(s1,s2)
将两个路径连起来
.获取文件名的几个方法
)Path.GetFileName(s1); //获取路径中的文件名
)Path.GetFileNameWithoutExtension(s1); //获取文件名,不包括后缀名!
)Path.GetDirectoryName(s1)//获取路径中的目录不包括文件名。
)Path.GetExtension(s1); //只获取扩展名
.GetFullPath("")
获取完整路径,根据相对路径获得绝对路径。
.临时目录
)GetTempPath() //获取当前用户的临时目录
)GetTempFileName() //获取一个随机的文件名,并在临时目录下创建这个文件。
)GetRandomFileName() //仅获取一个随机文件名。
Directory类
.创建目录
Directory.CreateDirectory(@"目录");
.判断某个目录是否存在某文件
string path =@"路径";
if(Directory.Exists(path))
{
}
.删除目录
)Directory.Delete(path); //删除空目录 ,目录下没有文件了。
)Directory.Delete(path,true); //不管空不空,都删!
)如果没有目录就会报异常,最好用if(Directory.Exists(path))判断一下。
.移动文件目录
重命名目录也用这个来做。
Directory.Move(@"c:\a",@"c:\abc");
.DirectoryInfo
可以把文件夹当作对象来使用
DirectoryInfo dirInfo = new DirectoryInfo(@"path");
.获取当前目录下的所有直接子目录 和 直接子文件
//获取目录下的直接子目录
String[] dirs =Direcotory.GetDirectories(@"目录");
//获取目录下的直接子文件
String[] files =Directory.GetFiles(@"目录");
.获取当前目录下的目录和文件 另一种方式
//获取目录下的直接子目录
//String[] dirs =Direcotory.GetDirectories(@"目录");
//获取目录下的直接子文件
//String[] files =Directory.GetFiles(@"目录");
//—————————以上是6中的做法,他有一定性能上的问题。什么问题呢?—————————————
使用String[] dirs =Direcotory.GetDirectories(@"目录");是必须要等获取了整个string之后,才能遍历这个集合。
如果希望,读到一条处理一条。
建议使用Directory.EnumerateFile()
)EnumerateFile返回的是一个实现了IEnumerable接口的集合。实际上使用了迭代器模式。
)SearchOption.ALLDirctories参数,会让.EnumerateFile()遍历所有子目录下的文件。
File类
.拷贝
File.Copy("Source"," Target",true);
.判断是否存在
File.Exists(@"Source") ;
.剪切
File.Move("Source","Targe");
.创建
File.Create("path");
.删除
File.Delete("path"); //删除,若没有,不报错!
.读操作
)File.ReadAllLines("path",Encoding.Default); //返回一个string[]
)File.ReadAllTest("path",Encoding.Default); //string
)File.ReadAllBytes("path");
.写操作
)File.WriteAllLines("path",new string[],Encoding.Default);//按行写入一个文件中。
)File.WriteAllText("path","string");
)File.WriteAllBytes("path",new byte[]);
)File.AppendAllText(); //将string追加到文件中。
.返回FileStream的快捷方式
)File.Open(string,FileMode); //返回一个FileStream
)File.OpenRead(string,FileMode); //返回一个只读的 FileStream
)File.OpenWrite(string,FileMode); //返回一个只写的 FileStream

二:文件流与内存流的转换

1.字符串=>比特数组

(1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");

(2)byte[] bt=Convert.FromBase64String("字符串");

补充:

System.Text.Encoding.Unicode.GetBytes(str);

System.Text.Encoding.UTF8.GetBytes(str);

System.Text.Encoding.GetEncoding("gb2312").GetBytes(str); //指定编码方式

string str = "中国?ss123?";

byte[] bytes = System.Text.Encoding.Default.GetBytes(str); //gb2312编码汉字占2个字节、英文字母占1个字节 bytes长度为12

string s = System.Text.Encoding.Default.GetString(new byte[] { bytes[0],bytes[1] });//解码后为“中”

byte[] bytes = {97, 98, 99, 100, 101, 102}; 

string str = System.Text.Encoding.ASCII.GetString(bytes); //结果为:abcdef  ASCII码表

      常用方法:

GetString  已重载。 在派生类中重写时,将一个字节序列解码为一个字符串。

GetChars   已重载。 在派生类中重写时,将一个字节序列解码为一组字符。

GetBytes   已重载。 在派生类中重写时,将一组字符编码为一个字节序列。

GetByteCount  已重载。 在派生类中重写时,计算对一组字符进行编码所产生的字节数。

GetCharCount  已重载。 在派生类中被重写时,计算对字节序列进行解码所产生的字符数。

GetDecoder 在派生类中重写时,获取一个解码器,该解码器将已编码的字节序列转换为字符序列。

GetEncoder 在派生类中重写时,获取一个解码器,该解码器将Unicode字符序列转换为已编码的字节序列

2.比特数组 => 字符串

(1)string str=System.Text.Encoding.Default.GetString(bt);

(2)string str=Convert.ToBase64String(bt);

3.字符串 => 流

(1)MemoryStream ms=new MemoryStream(System.Text.Encoding.Default.GetBytes("字符串"));

(2)MemoryStream ms=new MemoryStream(Convert.FromBase64String("字符串"));

4.流 => 字符串

(1)string str=Convert.ToBase64String(ms.ToArray());

(2)string str=System.Text.Encoding.Default.GetString(ms.ToArray());

5.比特数组 => 流

(1)MemoryStream ms=new MemoryStream(bt);

(2)MemoryStream ms=new MemoryStream();ms.Read(bt,0,bt.Lenght);

6.流 => 比特数组

(1)byte[] bt=ms.ToArray();

(2)MemoryStream ms=new MemoryStream();

ms.Write(bt,0,ms.Length);

  

来源:http://www.cnblogs.com/mcad/p/4203550.html

.NET中的IO操作基础介绍的更多相关文章

  1. Java中的IO操作和缓冲区

    目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2. ...

  2. 013-java中的IO操作-InputStream/Reader、OutputStream/Writer

    一.概述 IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称 ...

  3. java学习系列(一)Java中的IO操作

    Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输 ...

  4. python中的IO操作

    python中的基本IO操作: 1) 键盘输入函数:raw_input(string),不作处理的显示,与返回. input(string),可以接受一个python表达式作为返回,python内部得 ...

  5. Scala中的IO操作及ArrayBuffer线程安全问题

    通过Scala对文件进行读写操作在实际业务中应用也比较多,这里介绍几种常用的方式,直接上代码: 1. 从文件中读取内容 object Main { def loadData(): Array[Stri ...

  6. java中的IO操作总结

    一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...

  7. 【转】Java中的IO操作

    在使用io操作之前,先看一下java中的文件类File如何使用.File包括文件和目录,对文件和目录的操作是新建目录mkdir,新建文件createNewFile,删除文件和目录delete,以及其他 ...

  8. 第12讲-Java中的IO操作及对象的序列化与反序列化

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...

  9. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

随机推荐

  1. NOI2011 Day1

    NOI2011 Day1 兔农 题目描述:\(fib[1]=fib[2]=1, fib[i]=fib[i-2]+fib[i-1] (i\geq 3)\),若\(fib[i] \equiv 1(mod ...

  2. windows设置临时环境变量path

    所有在命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改. 1.查看当前所有可以的环境变量:输入set查看 2.查看某个环境变量:输入 set 变量名 例如 set path 3.修改环境变量 ...

  3. linux中读写锁的rwlock介绍-nk_ysg-ChinaUnix博客

    linux中读写锁的rwlock介绍-nk_ysg-ChinaUnix博客 linux中读写锁的rwlock介绍 2013-02-26 13:59:35 分类: C/C++   http://yaro ...

  4. javascript打乱数组顺序-----1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Java面试题之四

     十六.运行时异常与一般异常有何异同 Java提供了两类主要的异常:runtime exception和checked exception. 1.checked exception:这种异常也就是我们 ...

  6. cocos2d-x 3.0rc2 对于每个包执行情况的重要平台 (超级方便)

    首先,你需要下载三个文件:每间 android-ndk android-sdk ant 下载位置可以随意:由于3.0rc2执行setup.py  自己主动搜索这三个文件 win32cmd以下: (1) ...

  7. iOS深入学习 (Block全面分析)

    本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingblocksyntax,里面对于Block 为了方便对比,下面的代码我假设是写在ViewCon ...

  8. hahahahah

    dsfsefesfsffsfsfsfsfesfsfsfsfsfsfspackage realm;   import java.util.ArrayList; import java.util.List ...

  9. 软件介绍:搜索工具 Listary

    如今的互联网时代,搜索的重要性我想大家都是认可的.网上的知识浩如烟海,而搜索引擎是通向这些知识的入口.谷歌.百度等搜索引擎给我们带来了极大的便利,也无怪他们成长为如今的互联网巨头. 然而储存在个人硬件 ...

  10. spring mvc 的基本注解

    刚开始学习spring mvc 有很多东西不是很了解 spring mvc 四个基本注解 annotation(控制层,业务层,持久层) -- @Component.@Repository   @Se ...