2024年2月10日发(作者:)

C# File对象

File(文件)对象代表—个文件,并为检测文件是否存在、文件更名和文件删除提供了一些有用的方法。所有这些方法都是静态的,也就是说,不能使用NEW运算符创建File的实例,但可以直接使用File的方法。

if(s(""))

("");

也可以用File对象获得用于读写文件数据的文件流(FileStream)。

FileStream fs = ad("");

FileStream fs = xt("");

下面是一些有用的File方法

------------------------------------------------

ists(fileName)

(fileName)

Text(String)

(fromFile,toFile)

(fromFile,toFile)

ension(fileName) //获取文件的扩展名

ension(fileName) //若文件有扩展名,则返回true

-----------------------------------------------------------

要读一个文本文件,首先使用File对象获取一个StreamReader对象,然后用文本流的话方法读取数据。

StreamReader ts = xt("");

string s = ne();

要创建一个文本文件并写入数据,可使用CreateText方法获取—个StreamWrite对象。

//open for writing

StreamWriter sw = Text("");

ine("Hello file");

如果向—个已经存在的文件追加数据,可以直接创建—个StreamWrite对象,并将用于追加的那个布尔参数设置为true。

//append to text file

StreamWriter sw = new StreamWriter("",true);

=====================================================

大量经常发生的异常是在处理文件的输入和输出时引起的。非法文件名、文件不存在、目录不存在、非法文件名参数及文件保护错误等都会引起异常。因此,处理文件输入和输出的最好方法是

将文件处理代码放在try块中,这样可以保证掳获所有可能的错误,避免出现令人为难的致命错误。

各种文件类的方法都在其文档中结出了它们能抛出的异常。只要捕获通用Ex配必叨对象就能保证

捕获所有异常,但是如果需要对不同的异常进行不同的处理,既要对异常分别进行检测。

例如,可以按照下列方式打开一个文本文件。

try

{

StreamReader ts = xt("");

string s = ne();

}

catch(Exception e )

{

ine(e);

}

检测文件末尾

有两种可用的方法能保证不会超过文本文件的末尾:(1)查找空(null)异常,(2)查找数

流的末尾。当读数据超过了文本文件的末尾时,不会出现错误,也不会抛出文件结束的异常。但是,如果在文件末尾后读人一个字符中,会返回一个空值,可以用它在一个文件读人类中创建一个文件结束函数。

private StreamReader rf;

private bool eof;

//-----------------------------------

Public String readLine()

{

string s = ne();

if(s==null)

eof=true;

return s;

}

//-----------------------------------

public bool fEof()

{

return eof;

}

另外一种保证读数据不会超过文件末尾的方法是,使用Stream的Peek方法在读数据前先查看一下。Peek方法返回文件中下一个字符的ASCII码,如果没有字符则返回 -1.

public string read_line()

{

string s="";

if(()>0)

s = ne();

else

eof=true;

return s;

}

===================================

using System;

using c;

using ;

using ;

namespace OperateFile

{

public class csFile

{

private string fileName;

StreamReader ts;

StreamWriter ws;

private bool opened, writeOpened;

public csFile()

{

init();

}

public csFile(string file_name)

{

fileName = file_name;

init();

}

private void init()

{

opened = false;

writeOpened = false;

}

//打开欲读数据的文件

public bool OpenForRead()

{

return OpenForRead(fileName);

}

//打开欲读数据的文件

public bool OpenForRead(string file_name)

{

fileName = file_name;

try

{

ts = new StreamReader(fileName);

opened = true;

}

catch(FileNotFoundException e)

{

return false;

}

return true;

}

//从文件读取数据

public string readLine()

{

return ne();

}

//写文件

public void writeLine(string s)

{

ine(s);

}

public bool OpenForWrite()

{

return OpenForWrite(fileName);

}

public bool OpenForWrite(string file_name)

{

try

{

ws = new StreamWriter(file_name);

fileName = file_name;

writeOpened = true;

return true;

}

catch(FileNotFoundException e)

{

return false;

}

}

}

}