请输入关键字
FileInfo类
Alin|2017-11-24

//通过指定一个文件路径来创建一个对象。

FileInfo file=new FileInfo(@"Encodings.txt");

//创建文件夹

DirectoryInfo dirInfo=new DirectoryInfo(@"c:\alin");

//获取磁盘的所有逻辑名称

stirng[] names=Directory.GetLogicalDrives();

foreach(var item in names)

{

   DriveInfo driveInfo=new DriveInfo(item);

   driveInfo.DriveType=DriveType.CDROM;

}

FileStream fs=File.Open();//返回FileStream

FileStream fs=File.OpenRead();

FileStream fs=File.OpenWrite();

FileStream fs=new FileStream(参数);

Stream是所有流的父类,它是个抽象类。

文件操作的类都在System.IO.*;

文件流的出现,就是为了解决大文件在网络中的传输。要分成字节流在网络中传输,这样这安全又高效。

在转在文件流时,要指定相应的编码方式。

string msg="木之林的个人网站http://www.mzlin.net 个人微信订阅号是木之林";

byte[] bytes=System.Text.Encoding.UTF-8.GetBytes(msg);//字符串转文件流

string newStr=System.Text.Encoding.UTF-8.GetString(bytes);//文件流转字符串

文件流操作的都 是字节。不能直接操作字符串。

//通过FileStream来写文件

//文件流使用步骤

//1.创建文件流

FileStream fsWrite=new FileStream("First.txt",FileMode.Create,FileAccess.Write);//指定fsWrite只能FileAccess.Write

//2,使用文件流,执行读写操作。

string msg="木之林的个人网站http://www.mzlin.net 个人微信订阅号是木之林";

byte[] bytes=System.Text.Encoding.UTF-8.GetBytes(msg);//字符串转文件流

//参数1表示将指定的字节数组中的内容写入文件,参数2是偏移量(一般从0开始),参数3是写入的字节个数;

fsWrite.Write(bytes,0,bytes.Length);

//3,清空缓冲区,关闭文件流,释放资源

//fsWrite.Flush();//程序告诉缓冲区,需要执行的要立即执行程序。

//fsWrite.Close();//断开此线程文件流连接

fsWrite.Dispose();//回收系统资源

以上方法步骤可以直接用using(需要释放的资源类){操作方法}

//读取文件流

using(FileStream fsRead=new FileStream("First.txt",FileMode.Open,FileAccess.Read) )//1.创建文件流

{

  //根据文件的总字节数据 创建一个byte数组,这个一次性读取出来,大文件不能这样操作。

  byte[] bytes=new byte[fsRead.Length];

  //2,读取文件

    fsRead.Read(bytes,0,bytes.Length);

    string newStr=System.Text.Encoding.UTF-8.GetString(bytes);//文件流转字符串

}

 

//大文件流操作:将源文件内容读取到内存中,使用Positon属性为当前文件指针位置,每一次就要移动一下Position以备下次写到后面的位置。需要创建两个文件流来操作。

string source=@"c:\a.rmvb";

stirng target=@"d:\a.rmvb";

BigFileCopy(source,target);

Console.WriteLine("OK");

private static void BigFileCopy(string source,string target)
{
using(FileStream fsRead=new FileStream(source,FileMode.Open(),FileAccess.Read))
{
using(FileStream fsWrite=new FileStream(target,FileMode.Open(),FileAccess.Write))
{
//byte[] bytes=new byte[5242880];//创建一个缓冲区大小,根据实际情况来定
byte[] bytes=new byte[1024*1024*5];//5M缓冲区,但是这样写易读高,易于维护;
//返回值表示本次实际读取的字节个数;
int c=fsRead.Read(byte,0,bytes.Length);
while(c>0)
{
    //将读取到的内容写入到新文件中   
   fsWrite.Write(bytes,0,c);//第3个参数应该是读取到的字节数,而不是数组的长度。
   double d=(fsWrite.Position/(double)fsRead.Length)*100;
   Console.WriteLine($"{d}%");
   c=fsRead.Read(bytes,0,bytes.Length);
   
}
 
}
}
}

 

 

 

赞一下29||已浏览2589

本站版本归木之林解释所有 copyright(C)2010-2027www.mzlin.net 备案/许可证编号为:粤ICP备15050036号