| 方法 | 说明 |
|---|---|
| System.MarshalByRefObject | 这个是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据。 |
| FileSystemlnfc | 这是表示任何文件系统对象的基类 |
| Filelnfo和File | 这些类表示文件系统上的文件 |
| Directorylnfo和Directory | 表示文件系统上的文件夹 |
| Path | 包含用于处理路径名的一些静态方法 |
| Drivelnfa | 它的属性和方法提供了指定驱动器的信息 |
Filelnfo myFile=new Filelnfo(@”c:pxx\xx\xxx\xxx.txt”)
myFile.CopyTo(@"d:\xx\xx.txt”)://拷贝文件
对应的File处理方式
File.Copy(@”c:xxx\xx\xx\xx.txt",@d:xx\xx\xx.txt”);
Directorylnfo myFolder=new Directorylnfo(@”c:program files”);
| 属性 | 说明 |
|---|---|
| CreationTime | 创建文件或文件夹的时间 |
| DirectoryName(用于Filelnfo) | 包含文件夹的完整路径 |
| Parent(用于Directorylnfo) | 指定子目录的父目录 |
| Exists | 文件或文件夹是否存在 |
| Extension | 文件的扩展名,对于文件夹,它返回空白 |
| FulIName | 文件或文件夹的完整路径名 |
| LastAccessTime | 最后一次访问文件或文件夹的时间 |
| LastWriteTime | 最后一个修改文件或文件夹的时间 |
| Name | 文件或文件夹的名称 |
| Root(仅用于Directorylnfo) | 路径的根部分 |
| Length(仅用于Filelnfo) | 返回文件的大小(以字节为单位) |
| 方法 | 说明 |
|---|---|
| Create() | 创建给定名称的文件夹或者空文件,对于Filelnfo,该方法会返回一个流对象,以便于写入文件。 |
| Delete() | 删除文件或文件夹。对于文件夹有一个可以递归的Delete选项 |
| MoveTo() | 移动或重命名文件或文件夹 |
| CopyTo() | (只用于Filelnfo)复制文件,文件夹没有复制方法,如果想要复制完整的目录树,需要单独复制每个文件和文件夹 |
| GetDirectories() | (只适用于Directorylnfo)返回Directorylnfo对象数组,该数组表示文件夹中包含的所有文件夹 |
| GetFiles() | (只适用于Directorylnfo)返回Filelnfo对象数组,该数组表示文件夹中所有的文件 |
| GetFileSystemlnfos() | (只适用于Directorylnfo)返回Filelnfo和Directorylnfo对象它把文件夹中包含的所有对象表示为一个FileSystemlnfo引用数组 |
using System;
using System.IO;
namespace test11
{
internal class Program
{
//文件操作
public static void Main(string[] args)
{
//FileInfo DirectoryInfo
//.\都是exe程序所在路径(通常是bin\Debug\下)
//..\..\程序根目录的上级目录的上级目录即,test11
try
{
FileInfo myFile = new FileInfo(@"..\..\test1.txt");
myFile.Create();
Console.WriteLine("File is created Successfully");
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Filelnfotest=newFilelnfo(@”c:myfile.txt”);
Console.WriteLine(test.Exists);
Console.WriteLine(test.CreationTime);
test.CreationTime=new.DataTime(2010,1,1,7,20,0);
Console.WriteLine(test.CreationTime);
Console.WriteLine(Path.Combine(@"c:\my Cdocuments","Readme.txt"));
在不同的操作系统上,路径的表示是不一样的windows上是,在Unix就是/,我们可以使用Path.Combine连接两个路径,不用关心在哪个系统上.
| 字段 | 说明 |
|---|---|
| AltDirectorySeparatorChar | 提供分割目录的字符,在windows上使用\在Unix上用/ |
| DirectorySpeparatorChar | 提供分割目录的字符,在windows上使用/在Unix上用\ |
| PathSeparator | 提供一种与平台无关的方式,来指定划分环境变量的路径字符串,默认为分号 |
| VolumeSepartorChar | 提供一种与平台无关的方式,未指定容量分割符,默认为冒基一世 |
| File类 | 说明 |
|---|---|
| File.ReadAlIText(FilePath) | 根据文件路径读取文件中所有的文本 |
| File.ReadAlIText(FilePath,Encoding) | Encoding可以指定一个编码格式Encoding.ASCIl: |
| File.ReadAllBytes() | 方法可以打开二进制文件把内容读入一个字节数组 |
| File.ReadAlILines() | 以行的形式读取文件,一行一个字符串,返回一个字符串的数组 |

| 构造函数 | 取值 |
|---|---|
| FileMode(打开模式) | Append,Create,CreateNew,Open,OpenOrCreate和Truncate |
| FileAccess(读取还是写入) | Read,ReadWrite和Write |
| FileShare(文件共享设置) | Delete,Inheritable,None,Read,Readwrite和Write |
- 注意
- 如果文件不存在AppendOpen和Truncate会抛出异常;如果文件存在CreateNew会抛出异常
- Create和OpenOrCreatecreate会删除现有的文件,新建一个空的文件,OpenOrcreate会判断当前是否有文件,没有的话才会创建。



1. intnextByte=fs.ReadByte();读取一个字节(0-255)的数据,返回结果,如果达到流的末尾,就返回-1。
2. intnBytesRead=fs.Read(ByteArray,0,nBytes);//读取多个字节,第一个是存放的数组,第二个参数是开始存放的索引,第三个参数是要读取多少个字节。返回的结果是读取的自己的实际个数,如果达到流的末尾返回-1。

StreamReader sr =new StreamReader(@"c:xx\ReadMe.txt");
StreamReader str =new StreamReader(@"c:xx/xx.txt",Encoding.UTF8);
//(可取的编码格式ASCIIUnicodeUTF7UTF8UTF32)
FileStreamfs=new FileStream(@"c:xx\xx.txt",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr =new StreamReader(fs);
4.通过文件信息创建文本读取流一第二种方式
Filelnfo myFile=newFilelnfo(@"c:xx/xx.txt");
StreamReader sr=myFile.OpenText();


string nextLine=“×XXXXXX";sw.Write(nextLine);
char nextChar ='a';
sw.Write(nextChar);
char[] charArray=..;
sw.Write(charArray);
sw.Write(charArray,Startlndex,Length);


using System;
using System.IO;
namespace test12
{
internal class Program
{
public static void Main(string[] args)
{
var start = DateTime.Now;
FileStream readFileStream = new FileStream(@"..\..\girl.jpg",FileMode.Open,FileAccess.Read);
FileStream writeFileStream = new FileStream(@"..\..\CopyGirl.jpg", FileMode.Create, FileAccess.Write);
int nextByte = -1;
while ((nextByte = readFileStream.ReadByte()) != -1)
{
writeFileStream.WriteByte((byte)nextByte);
}
writeFileStream.Close();
readFileStream.Close();
var end= DateTime.Now;
var timeSpan = end.Subtract(start);
Console.WriteLine(timeSpan.TotalMilliseconds);
}
}
}

using System;
using System.IO;
namespace test13
{
internal class Program
{
public static void Main(string[] args)
{
var start = DateTime.Now;
FileStream readFileStream = new FileStream(@"..\..\girl.jpg",FileMode.Open,FileAccess.Read);
FileStream writeFileStream = new FileStream(@"..\..\CopyGirl.jpg", FileMode.Create, FileAccess.Write);
// int nextByte = -1;
// while ((nextByte = readFileStream.ReadByte()) != -1)
// {
// writeFileStream.WriteByte((byte)nextByte);
// }
byte[] buffer = new byte[1024];
int count = -1;
while ((count = readFileStream.Read(buffer, 0, 1024)) != 0)
{
writeFileStream.Write(buffer,0,count);
}
writeFileStream.Close();
readFileStream.Close();
var end= DateTime.Now;
var timeSpan = end.Subtract(start);
Console.WriteLine(timeSpan.TotalMilliseconds);
}
}
}
