浅学C#(20)——流(1)

版权声明:转载请注明出处 https://blog.csdn.net/le_17_4_6/article/details/86636438

流是串行化设备的抽象表示

  • 输出流
    向某些外部目标写入数据
  • 输入流
    用于将数据读到程序可以访问的内存或变量中

  • 用于文件操作的类
    File
    提供用于创建、复制、删除、移动和打开文件的静态方法并协助创建FileStream对象
    Directory
    提供用于创建、复制、删除、移动和打开目录的静态方法
    Path
    对包含文件或目录路径信息的字符串执行操作

  • FileInfo
    提供创建、复制、删除、移动和打开文件的实例方法并帮助创建FileSystem对象
    DirectoryInfo
    提供创建、移动和枚举目录和子目录的实例方法
    FileStream
    指向文件的流,支持对文件的读写,支持随机访问文件
    StreamReader
    从流中读取字符数据
    StreamWriter
    向流中写字符数据

  • FileSystemWatcher
    用于监控文件和目录的变化

  • DriveInfo
    提供了指定驱动器的信息

File类

常用静态方法
public static void Copy ( string sourceFileName, string destFileName )
将文件从源位置复制到目标位置
File.Copy(“c:\\text.txt”, “e:\\test.txt”);

public static FileStream Create ( string path )
创建指定文件并返回一个FileStream对象,如果指定对象存在则覆盖已有对象

FileStream  fs=File.Create(“d:\\test.txt”);
fs.Write(…);
……
fs.Close( );

public static StreamWriter CreateText ( string path )
创建指定文件并返回一个StreamWriter对象

string path = @"c:\temp\MyTest.txt"; 
if (!File.Exists(path)) { 
	using (StreamWriter sw = File.CreateText(path))
	 {  sw.WriteLine("Hello"); 
	    sw.WriteLine("And"); 
	    sw.WriteLine("Welcome");
	  } 
} 

public static StreamReader OpenText ( string path )
打开指定文件并返回一个StreamReader对象

using (StreamReader sr = File.OpenText(path)) { 
   string s = ""; 
   while ((s = sr.ReadLine()) != null) { 
     Console.WriteLine(s); 
   } 
} 

public static void Delete ( string path )
删除指定的文件

File.Delete(“d:\\text.txt”);

public static bool Exists ( string path )
判断文件存在与否

if  ( File.Exists(“d:\\text.txt”)==true)
 { Console.WriteLine(“The file exists”); }

public static void Move ( string sourceFileName, string destFileName )
将指定文件移到新位置

File.Move(“c:\\text.txt”,”e:\\test.txt”);

public static FileStream Open ( string path, FileMode mode )
FileMode: Append, Create, CreateNew, Open, OpenOrCreate, Truncate
public static FileStream OpenRead ( string path )

Append 打开现有文件并查找到文件尾,或创建新文件。 仅用于写操作
Create 指定操作系统应创建新文件。如果文件已存在,它将被改写。
CreateNew 指定操作系统应创建新文件。如果文件已存在,则将引发 IOException。
Open 指定操作系统应打开现有文件。 若文件不存在则抛出异常
OpenOrCreate 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。
Truncate 指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。 仅用于写操作。若文件不存在则抛出异常

string path = Path.GetTempFileName();
 using ( FileStream fs = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None) ) { 
    byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file."); 
      fs.Write(info, 0, info.Length); 
 } 
using ( FileStream fs = File.Open(path, FileMode.Open) ) { 
  byte[] b = new byte[1024]; 
  UTF8Encoding temp = new UTF8Encoding(true); 
  while ( fs.Read(b,0,b.Length) > 0 ) { 
   Console.WriteLine ( temp.GetString(b) ); 
 } 
} 
Directory类

常用方法
public static DirectoryInfo CreateDirectory ( string path )
创建目录和子目录

DirectoryInfo di=Directory.CreateDirectory(“c:\\mydir”);

public static void Delete ( string path )
删除目录及其内容

Directory.Delete(“c:\\mydir”);

public static void Move ( string sourceDirName, string destDirName )
移动文件和目录内容

Directory.Move(“c:\\mydir”,”c:\\mynewdir”);

public static bool Exists ( string path )
确定给定的目录字符串是否存在物理上对应的目录

Directory.Exists(“c:\\mydir”);

public static string GetCurrentDirectory ()
获取应用程序的当前工作目录

string   currentPath=Directory.GetCurrentDirectory( );
Console.WriteLine(“Current Directory is: “+currentPath);

public static void SetCurrentDirectory ( string path )
将应用程序的当前工作目录设置为指定目录

Directory.SetCurrentDirectory(“c:\\”);

public static DateTime GetCreationTime ( string path )
获取目录创建的日期和时间

DateTime   dt=Directory.GetCreationTime(Environment.CurrentDirectory);

public static string[] GetDirectories ( string path )
获取指定目录中子目录的名称

string[]  sudirectoryEntries=Directory.GetDirectories(“c:\\mydir”);

public static string[] GetFiles ( string path )
获取指定目录中文件的名称

string[]   files=Directory.GetFiles(“c:\\mydir”);

public static string[] GetFileSystemEntries ( string path )
获取指定目录中所有文件和子目录的名称

string[] directoryEntries = System.IO.Directory.GetFileSystemEntries(path); 
foreach (string str in directoryEntries) 
{ System.Console.WriteLine(str); } 

public static string[] GetLogicalDrives ()
获取计算机上格式为“<驱动器号>:\”的逻辑驱动器的名称

string[] drives = System.IO.Directory.GetLogicalDrives(); 
foreach (string str in drives) 
  { System.Console.WriteLine(str); } 
FileInfo

FileInfo对象表示磁盘或网络位置上的文件

FileInfo   aFile=new  FileInfo(@”C:\Log.txt”);
FileInfo   aFile=new  FileInfo(“Data.txt”);
if  (aFile.Exists)
   Console.WriteLine(“File  Exists”);   
if  (File.Exists(“Data.txt”))
   Console.WriteLine(“File Exists”);

public FileStream OpenRead () 
public FileStream OpenWrite () 

public FileInfo CopyTo ( string destFileName )
public FileStream Create ()
public StreamWriter CreateText ()
public StreamReader OpenText () 
public override void Delete () 
public void MoveTo ( string destFileName )
public FileStream Open ( FileMode mode ) 

FileSystemInfo的属性

  • Attributes
    使用FileAttributes枚举,获取或设置当前文件或目录的属性
    Archive 文件的存档状态
    Compressed 文件已压缩
    Device 保留供将来使用
    Directory 文件为一个目录
    Encrypted 文件或目录是加密的
    Hidden 文件是隐藏的
    Normal 文件正常,没有设置其它属性
    NotContentIndexed 操作系统的内容索引服务不会创建此文件的索引
    Offline 文件已脱机
    ReadOnly 文件为只读
    ReparsePoint 文件包含一个重新分析点
    System 文件为系统文件
    Temporary 文件是临时文件

  • CreationTime
    获取当前文件的创建日期和时间

  • Extension
    提取文件的扩展名,为只读属性

  • Exists
    判断文件是否存在。只读抽象属性

  • FullName
    检索文件的完整路径。只读属性

  • LastAccessTime
    获取或设置上次访问当前文件的日期和时间

  • LastWriteTime
    获取或设置上次写入当前文件的日期和时间

  • Name
    获取文件的名称,只读抽象属性

FileInfo的专用属性
Directory
包含当前文件的目录,仅读
DirectoryName
获取目录完整路径,仅读

Console.WriteLine("{0} has a directory Name of {1}", fileName, fileInfo.DirectoryName); 

IsReadOnly
指示文件是否为只读
Length
获取文件的容量,以字节为单位,仅读

DirectoryInfo类

常用方法
public void Create ()
创建目录

DirectoryInfo   di=new   DirectoryInfo(“c:\\mydir”);
di.Create();

public override void Delete ()
删除directoryInfo及其内容

di.Delete();

public void MoveTo ( string destDirName )
将directoryInfo实例及其内容移到新的路径

di.MoveTo(“c:\\Program  files”);

public DirectoryInfo CreateSubdirectory ( string path )
创建一个或多个子目录

DirectoryInfo   di=di.CreateSubdirectory(“SubDir”);

public DirectoryInfo[] GetDirectories ()
返回当前目录的子目录

DirectoryInfo[]   subdirs=di.GetDirectories( );

public FileInfo[] GetFiles ()
返回当前目录的文件列表

FileInfo[]   files=di.GetFiles( );

public FileSystemInfo[] GetFileSystemInfos ()

DirectoryInfo dir = new DirectoryInfo(directory); 
FileSystemInfo[] infos = dir.GetFileSystemInfos(); 

DirectoryInfo的专用属性
Parent
表示包含当前目录的目录, 只读属性
Root
表示包含当前目录的根目录,只读属性

Path类

常用方法
public static string ChangeExtension ( string path, string extension )
更改路径字符串的扩展名

string   newPath=Path.ChangeExtension(“c:\\test.txt”,”html”);

public static string Combine ( string path1, string path2 )
合并两个路径字符串

string   newPath=Path.Combine(“c:\\”,”mydir”);

public static string GetDirectoryName ( string path )
返回指定路径字符串的目录信息

string   dir=Path.GetDirectoryName(“c:\\mydir\\test.txt”);

public static string GetExtension ( string path )
返回指定路径字符串的扩展名

string   ext=Path.GetExtension(“c:\\mydir\\test.txt”);

public static string GetFileName ( string path )
返回指定路径字符串的文件名和扩展名

string  name=Path.GetFileName(“c:\\mydir\\test.txt”);

public static string GetFileNameWithoutExtension ( string path )
返回不带有扩展名的指定路径字符串的文件名

string  name=Path.GetFileNameWithoutExtension(“c:\\mydir\\test.txt”);

public static string GetFullPath ( string path )
返回指定路径字符串的绝对路径

string  fullPath=Path.GetFullPath(“test.txt”);

public static string GetTempPath ()
返回当前系统的临时文件夹的路径

string  tempPath=Path.GetTempPath( );

public static bool HasExtension ( string path )
确定路径是否包括文件扩展名

bool   hasExt=HasExtension(“c:\\mydir\\test.txt”);
Stream类的公有方法

public abstract int Read (byte[], int, int )
public virtual int ReadByte ()
public abstract long Seek ( long, SeekOrigin)
public abstract void SetLength ( long )
public abstract void Write ( byte[], int, int )
public virtual void WriteByte ( byte)

猜你喜欢

转载自blog.csdn.net/le_17_4_6/article/details/86636438