对文件的操作一般需要用到流。因次实际上对文件操作的掌握也就反映了对数据流操作的熟练性。
-
对文件的读取: 对文件的读取用到了streamreader这个对象,用它实现了将流中的数据读出来。 StreamReader fileStream = new StreamReader(txtFilePath,Encoding.Default);
txtContent.Text = fileStream.ReadToEnd();
fileStream.Close(); -
对文件的写入:相对应的,对文件的写入用到了streamWriter 这个对象,实际上实现的功能是将数据通过数据流放入相应的文件中。 StreamWriter fileWrite = new StreamWriter(txtFilePath,false,Encoding.Default);
fileWrite.Write(Label1.Text);
fileWrite.Close(); -
文件的上传:文件的上传的实现可以有两种方式,a,用htmlfile控件 b,直接用数据流来控制。其中多文件上传时的简便作发是用HttpFileCollection对象,然后再动态的将htmlfile控件加入到这个collection中,最后一起提交到后台,例如
System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
int fileCount;
int filecount = files.Count;
try
{
for(fileCount = 0;fileCount<files.Count;fileCount++)
{
//定义访问客户端上传文件的对象
System.Web.HttpPostedFile postedFile = files[fileCount];
string fileName, fileExtension;
//取得上传得文件名
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if(fileName != String.Empty)
{
Response.Write(Server.MapPath("Uploadfile/") + fileName);
postedFile.SaveAs(Server.MapPath("Uploadfile/") + fileName);
}
}
}
catch(System.Exception error)
{
}5 、文件信息的获得
获取文件信息用到了 DirectoryInfo和 FileSystemInfo两个对象,通过他们可以得到文件和文件夹的相关信息,为进一步的对文件操作打下基础。代码:
DirectoryInfo dirInfo = new DirectoryInfo("c://");
//循环判断当前目录下的文件和目录
foreach(FileSystemInfo fsi in dirInfo.GetFileSystemInfos())
{
string FileName = "";
string FileExt = "";
int FileSize = 0;
string FileModify = "";
//如果是文件
if(fsi is FileInfo)
{
fi = (FileInfo)fsi;
//取得文件名
FileName = fi.Name;
//取得文件的扩展名
FileExt = fi.Extension;
//取得文件的大小
FileSize = fi.Length;
//取得文件的最后修改时间
FileModify = fi.LastWriteTime;
}
else//否则是目录
{
dir = (DirectoryInfo)fsi;
//取得目录名
FileName = dir.Name;
//取得目录的最后修改时间
FileModify = dir.LastWriteTime;
//设置文件的扩展名为"文件夹"
FileExt = "文件夹";
}
}6、文件的数据流操作 ()
a. 通过数据流读取和创建文件
FileStream fs = new FileStream(Server.MapPath("uploadfile")+"//logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);
StringBuilder output = new StringBuilder();
output.Length = 0;
StreamReader read = new StreamReader(fs);
read.BaseStream.Seek(0, SeekOrigin.Begin);
while (read.Peek() > -1)
{
output.Append(read.ReadLine() + "/n");
}
read.Close();
Response.Write( output.ToString());7。通过数据流向文件中写入数据。
StreamWriter w = new StreamWriter(fs);
w.BaseStream.Seek(0, SeekOrigin.End);
w.Write("/nLog Entry : ");
w.Write("{0} {1} /r/n", DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());
w.Write(input + "/n");
w.Write("------------------------------------/n");
w.Flush();
w.Close();