文件操作一些方法介绍
Path 对路径 字符串进行操作
获得后缀GetExtension
能合并路径
获取文件名
Directory和DirectoryInfo 对目录进行操作
判断目录是否存在
创建目录
删除目录
获取目录下所有的子目录
获取目录下所有的子文件
File和FileInfo 对文件进行操作
读文件
写文件
追加文件
判断文件是否存在
创建文件
删除文件
Path方法介绍
ChangExtension 更改文件后缀名
string path = "c:\\abc\\bcd\\123\\xxx.rmvb";
更改后缀名
//path = Path.ChangeExtension(path, "jpg");
//Console.WriteLine(path);
Combine 合并路径
Console.WriteLine(Path.Combine("c:\\abc", "xxx.avi"));
GetDirectoryName 获取文件的目录
Console.WriteLine(Path.GetDirectoryName(path));
GetExtension 获取目录后缀名 这个是带点的
Console.WriteLine(Path.GetExtension(path));
GetFileName 获取文件名
Console.WriteLine(Path.GetFileName(path));
GetFileNameWithoutExtension
Console.WriteLine(Path.GetFileNameWithoutExtension(path));
操作目录 Directory和DirectoryInfo
Directory是静态的类
DirectoryInfo 不是静态的类 必须实例化
Directory不能返回文件夹的名称
DirectoryInfo能返回文件夹名称
DirectoryInfo di =new DirectoryInfo("文件路径");
di.Name;//文件夹名称
di.FullName;//文件夹全路径
File和FileInfo 对文件进行操作
文件的增:
将现有文件复制到新文件。允许覆盖同名的文件。
File.Copy(string sourceFileName,string destFileName);
创建或覆盖具有指定的缓冲区大小、文件选项和安全性的指定文件。
File.Create();
创建或打开一个文件用于写入UTF-8编码的文本。
File.CreateText();
打开一个文件,往文件中追加指定的字符串,然后关闭该文件。如果文件不存在,则创建之,然后追加关闭。
AppendAllText(string path,string content)
文件的删除:
删除指定的文件。如果指定的文件不存在,则不引发异常
File.Delete();
文件的修改:
将指定文件移动到新位置,并提供指定新文件名的选项。
File.Move
文件的查找:
判断文件是否存在
File.Exists
文件的其他操作:
打开指定路径上的,具有指定的读、写或读\写访问模式以及指定的共享选项
File.Open
打开现有文件进行读取
File.OpenRead
打开现有文件进行写入
File.OpenWrite
FileInfo fi=new FileInfo("1.txt");
fi.FullName;获取目录或文件的完整目录
fi.Name;获取文件名;
treeview 控件介绍
打开一个文件,往文件中追加指定的字符串,然后关闭该文件。如果文件不存在,则创建之,然后追加关闭。
要知道你当前选中那个树形节点 可以通过treevieweventargs e中的属性来获得
e.Node.Text//获取当前你选中节点的文本
要想知道你选中的是父节点 还是子节点 可以通过e.Node.Level可以知道
e.Node.Tag//获取当前你选中节点的路径
动态的往treeview中添加节点
当界面加载的时候
1.0清空节点
树形名称(treeView1)
treeView1.Nodes.Clear();
2.0添加根节点
TreeNode tn=treeView1.Nodes.Add("根节点");
tn.Node.Add("子节点");
还有一种方法
创建节点
TreeNode parent=new TreeNode();
parent.Text="根节点";
parent.tag="-1";存放文件路径
treeView1.Nodes.Add(parent);
treeView1.ExpandAll();//展开treeview控件
treeView1.CollapseAll();//收缩控件
文件流操作
创建文件流
FileStream fs =new FileStream("c:\\1.txt",FileMode.Open);
创建文件流的一种简洁形式
FileStream fs=File.OpenRead("c:\\1.txt")
把字节转换成字符串Encoding.UTF8.GetString(buffer,0,n);
//字符串变成字节数组
string str="123fsese";
byte[] bytes=Encoding.UTF8.GetBytes(str);
streamWriter对流的操作 就是先把你要写入的文本放到一个缓存空间里面
StreamWriter sw=new StreamWriter(fs);
sw.Write("你好");
然后通过通过Flush显示出来 就是让缓冲区中的数据清空 把数据放入到基础流里面
sw.Flush();
文件操作案例:
namespace _01递归实现文件显示
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
//当页面加载的时候显示阅读器目录
//定义一个根节点
string path="c://txt";
TreeNode tn0 = tvContent.Nodes.Add(path);
tn0.Text = "福尔摩斯侦探小说";
tn0.Tag = path;
LoadContentHelper(tn0);
}
//定一个方法用来递归查询目录和文件
public static void LoadContentHelper(TreeNode tn)
{
//得到目录路径
string path = tn.Tag as string;
//判断路径是否为空
if (path == null)
{
return;
}
//查询目录下的所以子目录
string[] dirs = Directory.GetDirectories(path);
//查询目录下的所有子文件
string[] files = Directory.GetFiles(path);
//循环遍历子目录
foreach (string item in dirs)
{
//添加子节点
TreeNode tn1 = tn.Nodes.Add(item);
tn1.Tag = item;
tn1.Text = Path.GetFileName(item);
//判断item是否是目录 如果是目录继续递归调用 不过这里就不用了
LoadContentHelper(tn1);
}
//遍历文件
foreach (string item in files)
{
TreeNode tn2 = tn.Nodes.Add(item);
tn2.Text = Path.GetFileName(item);
tn2.Tag = item;
}
}
private void tvContent_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode tn=e.Node;//选中当前的节点
//读取文件内容
string path = tn.Tag as string;
if (path == null) return;
//string strContent=File.ReadAllText(path);
if (File.Exists(path))
{
//string strContent = File.ReadAllText(path);
txtContent.Text = File.ReadAllText(path,Encoding.Default);
}
}
}
}