1、path类
F12转到定义,这是静态类,可以[类名].方法名:
以前的方法截取字符串:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Path类
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\Administrator\Desktop\test.txt";
int index = path.LastIndexOf("\\");
string str = path.Substring(index+1);
Console.WriteLine(str);
Console.ReadKey();
}
}
}
取文件夹名、扩展名和后缀:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Path类
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\Administrator\Desktop\test.txt";
string str = Path.GetFileName(path);
Console.WriteLine(str);
Console.WriteLine("没有扩展名:{0}",Path.GetFileNameWithoutExtension(path));
Console.WriteLine("取扩展名:{0}", Path.GetExtension(path));
Console.WriteLine("文件夹名路径:{0}", Path.GetDirectoryName(path));
Console.WriteLine("全路径:{0}", Path.GetFullPath(path));
Console.WriteLine("组合路径:{0}", Path.Combine(path,"my.txt"));
Console.ReadKey();
}
}
}
2、File类
用于创建、写入文件等,如创建:
string path = @"C:\Users\Administrator\Desktop\test.txt";
File.Create(path);
Console.WriteLine("创建成功!");//已存在,会被覆盖
Console.ReadKey();
删除文件:
string path = @"C:\Users\Administrator\Desktop\test.txt";
File.Delete(path);
Console.WriteLine("删除成功!");//彻底删除,不能恢复
Console.ReadKey();
拷贝文件:
string path = @"C:\Users\Administrator\Desktop\test.txt";
File.Create(path);//出问题:
//其他信息: 文件“C:\Users\Administrator\Desktop\test.txt”正由另一进程使用,因此该进程无法访问此文件。
File.Copy(path, @"C:\Users\Administrator\Desktop\test1.txt");
Console.ReadKey();
3、文件的读取
去读取行,只能读取小文件,因为它是读取全部到内存,返回string 的数组:
string[] contains=File.ReadAllLines(path);
for (int i = 0; i < contains.Length; i++)
{
Console.WriteLine(contains[i]);
}
用ReadAllText,返回string:
string path = @"C:\Users\Administrator\Desktop\test.txt";
string str = File.ReadAllText(path);
Console.WriteLine(str);
以上只用于处理文本,当为视频图像时:
string path = @"C:\Users\Administrator\Desktop\test.txt";
byte[] btys = File.ReadAllBytes(path);
//将字节数组中的每一个元素按照我们指定的编码格式解码成字符串
//utf-8 GB2312 GBK ASCII Unicode
string s = Encoding.Default.GetString(btys);
Console.WriteLine(s);
4、文件的写入
以字节形式:
string path = @"C:\Users\Administrator\Desktop\new.txt";
string str = "今天天气好晴朗,处处好风光!";
byte[] buffer = Encoding.Default.GetBytes(str);
File.WriteAllBytes(path, buffer);
Console.WriteLine("Write Down");
以WriteAllLine形式:
string path = @"C:\Users\Administrator\Desktop\new.txt";
File.WriteAllLines(path, new string[] { "111", "222", "333", "444" });
Console.WriteLine("Write Down");
以WriteAllText
string path = @"C:\Users\Administrator\Desktop\new.txt";
File.WriteAllText(path, "111\r\n2222\r\n333");
Console.WriteLine("Write Down");
5、文件的追加
文件的追加,不会覆盖和删除原文件,相当于Python的with open(‘haproxy’, ‘a’, encoding=’utf-8’) as f1:
方法1:
string path = @"C:\Users\Administrator\Desktop\new.txt";
File.AppendAllText(path, "我是新来的。");
Console.WriteLine("Write Down");
方法2:
string path = @"C:\Users\Administrator\Desktop\new.txt";
File.AppendAllLines(path,new string[] {"aaaaa"});
Console.WriteLine("Write Down");
6、绝对路径和相对路径
绝对路径:通过电脑给定的完整路径
相对路径:可执行路径下的路径“new.txt”,bin→debug下
所以我们在开发时尽量使用相对路径
7、文件流
解决读取内容过小问题,处理大文件