ASPNET对文件的操作
1 文件和流
文件:数据的有序集合,它是进行数据读写的基本对象
流:连续的字节流存放空间,流中的存储空间可以是连续的空间,也可以不是
2 File Directory 里面含有静态的对文件和目录操作的方法。调用 类.方法
FileInfo DirectoryInfo 必须实例话,才能使用 。 对象.方法
2 对文件的操作File类
命名 空间:using Syatem.IO;
方法:
AppendText:创建一个StreamWriter对象,用于向文件末尾添加新的内容
Copy
Move
Delete
Exist:判断文件是否存在
Open:以指定的方式,权限打开文件
OpenRead:以只读打开
OpenText:打开文本文件,返回iu留足
OpenWrite
Create:创建文件
CreateText:创建文本文件
1)Copy
private void CopyFile(string oldfile,string newfile)
{
string oldfilepath=Server.MapPath(".")+" //"+oldfile;
string newfilepath=Server.MapPath(".")+" //"+newfile;
try
{
if(File.Exists(oldfilepath))//假如存在拷贝文件
{
if(!File.Exists(newfilepath))
{
File.Copy(oldfilepath,newfilepath);
//移动文件
//File.Move(oldfilepath,newfilepath);
}
}
}
catch
{
....
}
}
//利用流拷贝可以定义到文件的任何地方,然后开始读取
private void CopyFile(string oldfilepath,string newfilepath)
{
FileStrem oldfs=new FileStream(oldfilepath,FileMode.Open,FileAccess.Open);
FileStrem newfs=new FileStream(newfilepath,FileMode.Create,FileAccess.Write);
//分别建立读写类
BinaryReader br=new BinaryReader(oldfs);
BinaryWriter bw=new BinaryWriter(newbw);
//将指针指向流的头部
br.BaseStream.Seek(0,SeekOrigin.Begin);
//将写指针指向流文件的尾部
bw.BaseStream.Seek(0,SeekOrigin.End);
while(br.BaseStream.Position<br.BaseStream.Length)
{
//从br中读取byte写入bw
bw.Write(br.ReadByte());
}
br.Close();
bw.Close();
}
2)Writer
private void WriterFile(string filename,string strinfo)
{
string filenamepath=Server.MapPath(".")+" //"+filename;
//建立StreamWriter
StreamWriter rw=File.CreateText(filenamepath)
//写入内容
rw.WriteLine(strinfo);
//将缓冲区的内容写入文件
rw.Flush();
//关闭对象
rw.Close();
}
//利用文件流写自定义编码格式,解决乱码问题
private string WriteFile(string filename,string strinfo)
{
FileStream fs=new FileStream(filename,FileMode.Create,FileAccess.Write);
StreamWriter rw=new StreamWriter(fs,Encoding.Default)//默认是UFT编码
rw.WriteLine(strinfo);
rw.Flush();
rw.Close();
fs.Close();
}
3)Read
private string ReadFile(string filename)
{
string filenamepath=Server.MapPath(".")+" //"+filename;
//打开文件
StreamReader sr=File.OpenText(filenamepath);
//利用流读
//FileStream fs=new FileStream(filenamepath,FileMode.Open,FileAccess.Read);
// StreamReader sr=new StreamReader(fs.Encoding.Default);
StringBulider out=new StringBuilder();
string line;
while((line=sr.ReadLine())!=null)
{
out.Append(line+"<br>");
}
sr.close();
return out;
}
4)Del
private void DelFile(string filename)
{
if(File.Exists(filename))
{
try
{
File.Delete(filename);
}
catch
{
.......
}
}
}
3 显示目录下的文件信息,并且在表格中显示
private void ListFile(string strfilepath)
{
Table tb=new Table();
TableRow tr;
TableCell td;
tr=new TableRow();
//添加表格的头信息
td=new TableCell();
td.Controls.Add(new LiteralControl("<img src="name.gif">"));
tr.Cells.Add(td);
td=new TableCell();
td.Controls.Add(new LiteralControl("<img src="size.gif">"));
tr.Cells.Add(td);
tb.Row.Add(tr);
string filename;
string filesize;
string filepic;
string fileext;//文件的扩展名
//取得文件的目录
DirectoryInfo fir=new DirectoryInfo(filenamepath);
foreach(FileSystemInfo fsinfo in dir.GetFileSystemInfos())
{
if(fsinfo is FileInfo)
{
filename=((FileInfo)fsinfo).Name;
filesize=((FileInfo)fsinfo).Length;
fileext=((FileInfo)fsinfo).Extension;
swith(fileext)
{
case ".gif"
filepic=" gif.gif";
break;
default:
filepic="other.gif";
break;
}
filepic="<img src'>"+filepic+"'width=25>"'
}
else
{
//当前为目录
dr=(DirectoryInfo)fsinfo;
filename=dr.Name;
filepic="<img src='directory.gif' width=200>"
}
tr=new TableRow();
td = new TableCell();
td.Controls.Add(new LiteralControl(filepic+" "+filename));
tr.Cells.Add(td);
......
tb.Rows.Add(tr);
}
}
4 查找文件
private void FindFile(string filename)
{
try
{
string[] drives=Directory.GetLogicalDrivers();
foreach(string str in drives)
{
if(ProcessDirectory(str,filename))
{
//显示找到
}
}
}
catch(IOException )
{
......
}
catch(System.Security.SecurityExcption)
{
......
}
}
private bool ProcessDirectory(string dir,string filename)
{
try
{
string[] files=Directory.GetFiles(dir);
foreach(string tempfilename in files)
{
if(ProcessFile(tempfilename,filename))
{
return true;
}
}
string[] subdirs=Directory.GetDirectories(dir);
foreach(string subdir in subdirs)
{
if(ProcessDirectory(subdir))
{
return true;
}
}
return false;
}
catch
{
......
}
}
priavte bool ProcessFile(string tempfilename,string filename)
{
if(Path.getFileName(tempfilename).ToLower()==filename.Trim().ToLower())
{
return true;
}
else
{
return false;
}
}
1 文件和流
文件:数据的有序集合,它是进行数据读写的基本对象
流:连续的字节流存放空间,流中的存储空间可以是连续的空间,也可以不是
2 File Directory 里面含有静态的对文件和目录操作的方法。调用 类.方法
FileInfo DirectoryInfo 必须实例话,才能使用 。 对象.方法
2 对文件的操作File类
命名 空间:using Syatem.IO;
方法:
AppendText:创建一个StreamWriter对象,用于向文件末尾添加新的内容
Copy
Move
Delete
Exist:判断文件是否存在
Open:以指定的方式,权限打开文件
OpenRead:以只读打开
OpenText:打开文本文件,返回iu留足
OpenWrite
Create:创建文件
CreateText:创建文本文件
1)Copy
private void CopyFile(string oldfile,string newfile)
{
string oldfilepath=Server.MapPath(".")+" //"+oldfile;
string newfilepath=Server.MapPath(".")+" //"+newfile;
try
{
if(File.Exists(oldfilepath))//假如存在拷贝文件
{
if(!File.Exists(newfilepath))
{
File.Copy(oldfilepath,newfilepath);
//移动文件
//File.Move(oldfilepath,newfilepath);
}
}
}
catch
{
....
}
}
//利用流拷贝可以定义到文件的任何地方,然后开始读取
private void CopyFile(string oldfilepath,string newfilepath)
{
FileStrem oldfs=new FileStream(oldfilepath,FileMode.Open,FileAccess.Open);
FileStrem newfs=new FileStream(newfilepath,FileMode.Create,FileAccess.Write);
//分别建立读写类
BinaryReader br=new BinaryReader(oldfs);
BinaryWriter bw=new BinaryWriter(newbw);
//将指针指向流的头部
br.BaseStream.Seek(0,SeekOrigin.Begin);
//将写指针指向流文件的尾部
bw.BaseStream.Seek(0,SeekOrigin.End);
while(br.BaseStream.Position<br.BaseStream.Length)
{
//从br中读取byte写入bw
bw.Write(br.ReadByte());
}
br.Close();
bw.Close();
}
2)Writer
private void WriterFile(string filename,string strinfo)
{
string filenamepath=Server.MapPath(".")+" //"+filename;
//建立StreamWriter
StreamWriter rw=File.CreateText(filenamepath)
//写入内容
rw.WriteLine(strinfo);
//将缓冲区的内容写入文件
rw.Flush();
//关闭对象
rw.Close();
}
//利用文件流写自定义编码格式,解决乱码问题
private string WriteFile(string filename,string strinfo)
{
FileStream fs=new FileStream(filename,FileMode.Create,FileAccess.Write);
StreamWriter rw=new StreamWriter(fs,Encoding.Default)//默认是UFT编码
rw.WriteLine(strinfo);
rw.Flush();
rw.Close();
fs.Close();
}
3)Read
private string ReadFile(string filename)
{
string filenamepath=Server.MapPath(".")+" //"+filename;
//打开文件
StreamReader sr=File.OpenText(filenamepath);
//利用流读
//FileStream fs=new FileStream(filenamepath,FileMode.Open,FileAccess.Read);
// StreamReader sr=new StreamReader(fs.Encoding.Default);
StringBulider out=new StringBuilder();
string line;
while((line=sr.ReadLine())!=null)
{
out.Append(line+"<br>");
}
sr.close();
return out;
}
4)Del
private void DelFile(string filename)
{
if(File.Exists(filename))
{
try
{
File.Delete(filename);
}
catch
{
.......
}
}
}
3 显示目录下的文件信息,并且在表格中显示
private void ListFile(string strfilepath)
{
Table tb=new Table();
TableRow tr;
TableCell td;
tr=new TableRow();
//添加表格的头信息
td=new TableCell();
td.Controls.Add(new LiteralControl("<img src="name.gif">"));
tr.Cells.Add(td);
td=new TableCell();
td.Controls.Add(new LiteralControl("<img src="size.gif">"));
tr.Cells.Add(td);
tb.Row.Add(tr);
string filename;
string filesize;
string filepic;
string fileext;//文件的扩展名
//取得文件的目录
DirectoryInfo fir=new DirectoryInfo(filenamepath);
foreach(FileSystemInfo fsinfo in dir.GetFileSystemInfos())
{
if(fsinfo is FileInfo)
{
filename=((FileInfo)fsinfo).Name;
filesize=((FileInfo)fsinfo).Length;
fileext=((FileInfo)fsinfo).Extension;
swith(fileext)
{
case ".gif"
filepic=" gif.gif";
break;
default:
filepic="other.gif";
break;
}
filepic="<img src'>"+filepic+"'width=25>"'
}
else
{
//当前为目录
dr=(DirectoryInfo)fsinfo;
filename=dr.Name;
filepic="<img src='directory.gif' width=200>"
}
tr=new TableRow();
td = new TableCell();
td.Controls.Add(new LiteralControl(filepic+" "+filename));
tr.Cells.Add(td);
......
tb.Rows.Add(tr);
}
}
4 查找文件
private void FindFile(string filename)
{
try
{
string[] drives=Directory.GetLogicalDrivers();
foreach(string str in drives)
{
if(ProcessDirectory(str,filename))
{
//显示找到
}
}
}
catch(IOException )
{
......
}
catch(System.Security.SecurityExcption)
{
......
}
}
private bool ProcessDirectory(string dir,string filename)
{
try
{
string[] files=Directory.GetFiles(dir);
foreach(string tempfilename in files)
{
if(ProcessFile(tempfilename,filename))
{
return true;
}
}
string[] subdirs=Directory.GetDirectories(dir);
foreach(string subdir in subdirs)
{
if(ProcessDirectory(subdir))
{
return true;
}
}
return false;
}
catch
{
......
}
}
priavte bool ProcessFile(string tempfilename,string filename)
{
if(Path.getFileName(tempfilename).ToLower()==filename.Trim().ToLower())
{
return true;
}
else
{
return false;
}
}