File类的常用静态方法:
Directory类的常用静态方法:
ListAll(@"f:\");-------------执行方法!! /// <summary> /// 递归调用,列出某目录下的所有.jpg文件 /// </summary> /// <param name="dir"></param> static void ListAll(string dir) { //得到目录下的所有文件 string[] files = Directory.GetFiles(dir); foreach (string file in files) { if (file.EndsWith(".jpg")) { Console.WriteLine(file); } } //得到目录下的所有子目录名称 string[] dirs = Directory.GetDirectories(dir); foreach (string d in dirs) { //递归调用ListAll方法 ListAll(d); } }
Path类常用静态方法:
string ChangeExtension(string path, string extension) (*) 修改文件的后缀,“修改”支持字符串层面的,没有真的给文件改名string s = Path.ChangeExtension(@"C:\temp\F3.png", "jpg")
string Combine(string path1, string path2) 将两个路径合成一个路径,比用+好,可以方便解决是不是加斜线的问题,自动处理路径分隔符的问题 string s = Path.Combine(@"c:\temp","a.jpg")
string GetDirectoryName(string path) (*) 得到文件的路径名。Path.GetDirectoryName(@"c:\temp\a.jpg")-----返回 c:\temp
string GetExtension(string path) 得到文件的扩展名
string GetFileName(string path) 得到文件路径的文件名部分
string GetFileNameWithoutExtension(string path) 得到去除扩展名的文件名
string GetFullPath(string path) 得到文件的全路径。”.\”当前路径,”..\”上一级路径,”..\..\”上一级的上一级
string GetTempFileName() 得到一个唯一的临时文件名(*)
string GetTempPath() 得到临时文件夹的路径(*)
得到当前exe的路径。Assembly.GetExecutingAssembly(),不要用Directory.GetCurrentDirectory(),这个可能会变(使用OpenFileDialog或者SetCurrentDirectory())。(*)解决Access文件路径的问题。
1 //得到当前执行的exe路径 2 string location = Assembly.GetExecutingAssembly().Location; 3 4 //得到当前exe所在的文件夹目录---出去路径中的*.exe 5 string locDir = Path.GetDirectoryName(location); 6 7 //合并两个路径字符串, 8 string newFileName = Path.Combine(locDir, "1.txt"); 9 10 //File.ReadAllText读取指定文件的所有行,返回string类型 11 //File.ReadAllLines返回为string[]数组 12 Console.WriteLine(File.ReadAllText(newFileName, Encoding.Default));
FileStream类常用静态方法:
练习:文件加密(每一位用255-r)
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.IO; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace FileStream加密 11 { 12 public partial class Form1 : Form 13 { 14 public Form1() 15 { 16 InitializeComponent(); 17 } 18 19 private void button1_Click(object sender, EventArgs e) 20 { 21 //初始化一个OpenFileDialog类 22 OpenFileDialog fileDialog = new OpenFileDialog(); 23 24 //判断用户是否正确的选择了文件 25 if (fileDialog.ShowDialog() == DialogResult.OK) 26 { 27 //将用户选取的路径保存在文本框中 28 textBox1.Text = fileDialog.FileName; 29 30 } 31 } 32 33 private void button2_Click(object sender, EventArgs e) 34 { 35 36 37 //实例化一个读文件流的实例----Open 38 using (FileStream inputStream = new FileStream(textBox1.Text, FileMode.Open)) 39 { 40 //进度条代码 41 //获取目标文件的大小,FileInfo表示系统查看文件的大小(相当于右击,查看属性),而不是读入内存查看大小 42 FileInfo fileInfo = new FileInfo(textBox1.Text); 43 44 //fileInfo.Length返回当前文件的大小,是long类型,必须显示转换成int类型 45 //progressBar1.Maximum是指进度条的最大值 46 progressBar1.Maximum =(int) fileInfo.Length; 47 48 //实例化一个写文件流的实例----Create 49 using (FileStream outputStream = new FileStream(textBox2.Text, FileMode.Create)) 50 { 51 //缓冲区,就是一次读写的大小 52 byte[] bytes = new byte[1024 * 1024 * 4]; 53 //表示当前读取大小的变量 54 int readBytes; 55 56 //表示从流中读取字节块并将该数据写入给定的缓冲区(bytes)中 57 //从当前位置的偏移量0开始读取,就是从当前位置开始读取 58 //读取最多bytes.Length这么大 59 //readBytes=inputStream.Read(bytes,0,bytes.Length是赋值表达式,它的值等于最终的值 60 //例如:int a=1++;赋值表达式的值等于2 61 while((readBytes=inputStream.Read(bytes,0,bytes.Length))>0) 62 { 63 //对读取出的数据进行加密处理 64 //bytes是规定的缓冲区大小,即最大的读取数量 65 //readBytes是实际的读取大小 66 for (int i = 0; i < readBytes; i++) 67 { 68 //将每个字节都用Byte.MaxValue---255减去,然后另存 69 bytes[i] = (byte)(Byte.MaxValue - bytes[i]); 70 } 71 //输出流从缓冲区读取数据写入该流 72 outputStream.Write(bytes, 0, readBytes); 73 74 //进度条的当前值等于写入值的大小 75 progressBar1.Value = progressBar1.Value + readBytes; 76 } 77 //表示写入完毕 78 if (progressBar1.Value == progressBar1.Maximum) 79 { 80 MessageBox.Show("ok"); 81 } 82 } 83 } 84 } 85 } 86 }
原文地址:http://www.cnblogs.com/skyl/p/3842706.html