黑马程序员技术交流社区
标题: C#IO流 [打印本页]
作者: 甘家利 时间: 2013-2-21 21:42
标题: C#IO流
System.IO命名空间中的类为托管应用程序提供文件以及其他形式的输入输出。托管i/o的基本构件是流,而流是字节导向的数据的抽象表示。流通过System.IO.Stream类表示.
System.IO.FileStream允许将文件作为流访问;
System.IO.MemoryStream允许将内存块作为流进行访问;…………
托管和非托管的应用程序最常使用的IO形式是文件IO。托管应用程序读写文件的一般步骤如下
1、用FileStream对象打开文件
2、进行二进制读写操作,在FileStream对象周围包装BinaryReader和BinaryWriter的实例,并调用BinaryReader和BinaryWriter方法执行输入输出。
3、要读写文本,在FileStream对象的周围包装一个StreamReader和StreamWriter,然后使用StreamReader和StreamWriter方法完成输入输出。
4、关闭FileStream对象。
下面是一个简单的文本文件读操作
using System;
using System.IO;
class FileTest
{
static void Main(string [] args)
{
string filename="testfile.txt";
//打开文件并显示其内容
StreamReader reader=null;
try
{
reader=new StreamReader(filename);
for(string line=reader.ReadLine();line!=null;line=reader.ReadLine())
Console.WriteLine(line);
}
catch(IOException e)
{
Console.WriteLine(e.Message);
}
finally
{
if(reader!=null)
reader.Close();
}
}
}
/**
* FCL是一个非常丰富的类库,所以还有许多打开文件并进行读取的方法,比如
* 1.用File.open创建一个FileStream,并围绕它包装一个StreamReader
* FileStream stream=File.Open(filename,FileMode.Open,FileAccess.Read);
* StreamReader reader=new StreamReaderaa(stream);
* 2.使用File.OpenText,在一步内创建一个FileStream和一个StreamReader
* StreamReader reader=File.OpenText(filename);
* 当然,还有其他的方法
* 若要对文本进行写入操作,可以使用StreamWriter
*/
其中的异常处理是为了防止意外的事情发生,如传递给StreamReader的构造函数的文件名非法,或者在执行raeder.Close();前匡架引发异常等。
C#
追加文件
StreamWriter sw = File.AppendText(Server.MapPath(".")+"
\\myText.txt");
sw.WriteLine("
追逐理想");
sw.WriteLine("kzlll");
sw.WriteLine(".NET
笔记");
sw.Flush();
sw.Close();
C#
拷贝文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"
\\myText.txt";
NewFile = Server.MapPath(".")+"
\\myTextCopy.txt";
File.Copy(OrignFile,NewFile,true);
C#
删除文件
string delFile = Server.MapPath(".")+"
\\myTextCopy.txt";
File.Delete(delFile);
C#
移动文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"
\\myText.txt";
NewFile = Server.MapPath(".")+"
\\myTextCopy.txt";
File.Move(OrignFile,NewFile);
C#创建目录
// 创建目录c:\sixAge
DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge");
// d1指向c:\sixAge\sixAge1
DirectoryInfo d1=d.CreateSubdirectory("sixAge1");
// d2指向c:\sixAge\sixAge1\sixAge1_1
DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");
// 将当前目录设为c:\sixAge
Directory.SetCurrentDirectory("c:\\sixAge");
// 创建目录c:\sixAge\sixAge2
Directory.CreateDirectory("sixAge2");
// 创建目录c:\sixAge\sixAge2\sixAge2_1
Directory.CreateDirectory("sixAge2\\sixAge2_1");
递归删除文件夹及文件
<%@ Page Language=C#%>
<%@ Import namespace="System.IO"%>
<Script runat=server>
public void DeleteFolder(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach(string d in Directory.GetFileSystemEntries(dir))
{
if(File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
Response.Write(dir+" 文件夹删除成功");
}
else
Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示
}
protected void Page_Load (Object sender ,EventArgs e)
{
string Dir="D:\\gbook\\11";
DeleteFolder(Dir); //调用函数删除文件夹
}
1、建立一个文本文件
public class FileClass
{
public static void Main()
{
WriteToFile();
}
static void WriteToFile()
{
StreamWriter SW;
SW=File.CreateText("c:\MyTextFile.txt");
SW.WriteLine("God is greatest of them all");
SW.WriteLine("This is second line");
SW.Close();
Console.WriteLine("File Created SucacessFully");
}
}
2、读文件
public class FileClass
{
public static void Main()
{
ReadFromFile("c:\MyTextFile.txt");
}
static void ReadFromFile(string filename)
{
StreamReader SR;
string S;
SR=File.OpenText(filename);
S=SR.ReadLine();
while(S!=null)
{
Console.WriteLine(S);
S=SR.ReadLine();
}
SR.Close();
}
}
3、追加操作
public class FileClass
{
public static void Main()
{
AppendToFile();
}
static void AppendToFile()
{
StreamWriter SW;
SW=File.AppendText("C:\MyTextFile.txt");
SW.WriteLine("This Line Is Appended");
SW.Close();
Console.WriteLine("Text Appended Successfully");
}
}
作者: 许庭洲 时间: 2013-2-22 14:57
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |