File静态类的用法
c#与java文件流表示的含义不同,在c#中File是静态的,我们可以直接通过调用File类中的静态方法,就可以完成文件的读取的写入操作,File类的特点是一次性将文件全部读取和写入,所以File类适合操作小文件。
//创建一个文件
File.Create(@"C:\Users\htao\Desktop\new.txt");
/使用ReadAllBytes()和ReadAllBytes()方法/
//向文件中写入字节数组
string str = "那日少年别青衫,明月照银簪。\r\n燕子分别时候,恨风急云乱"; //将字符串转换成字节数组 byte[] buffer = Encoding.UTF8.GetBytes(str);//按照utf-8的进行编码//将字节数组写入到文件中 File.WriteAllBytes(@"C:\Users\htao\Desktop\new.txt", buffer);Console.WriteLine("文件写入成功");
//使用ReadAllBytes()读取文件
byte[] bytes = File.ReadAllBytes(@"C:\Users\htao\Desktop\new.txt"); //将字节数组转换成字符串 string content = Encoding.UTF8.GetString(bytes); Console.WriteLine(content);
注意:ReadAllBytes()和WriteAllBytes()读取 的是字节,可以操作任意类型的文件
///使用File类中的ReadAllLines(),ReadAllText(),WriteAllLines(),WriteAllText(),进行文件的读取和写入操作//
//读取指定文件的内容
string[] strs = File.ReadAllLines(path, Encoding.UTF8);//遍历输出foreach (string item in strs){ Console.WriteLine(item);}//向指定文件写入内容
File.WriteAllLines(path, contents, Encoding.UTF8);//向指定的路径写入内容Console.WriteLine("文件写入成功"); Console.WriteLine("文件写入成功");
Console.WriteLine(File.ReadAllText(path, Encoding.UTF8));
string contents = "那日少年别青衫,明月照银簪。\r\n燕子分别时候,恨风疾云乱"; File.WriteAllText(path, contents, Encoding.UTF8);Console.WriteLine("文件写入成功");使用FileStream文件的读取和写入
using System;
using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;namespace 文件的复制{ class Program { static void Main(string[] args) { string sourcePath = @"C:\Users\htao\Desktop\20110228pm.avi";//源文件的路径 string targetPath = @"C:\Users\htao\Desktop\copy.avi";//复制后目标文件的路径 //复制多媒体文件 CopyMediaFile(sourcePath, targetPath); Console.WriteLine("复制成功"); Console.ReadKey(); } /// <summary> /// 不使用using关键字复制多媒体文件,需要自己关闭流资源 /// </summary> /// <param name="sourcePath">源文件路径</param> /// <param name="targetPath">复制后目标文件路径</param> public static void CopyMediaFile(string sourcePath, string targetPath) { //创建FileStream对象用来读取文件 FileStream fsReader = new FileStream(sourcePath, FileMode.OpenOrCreate, FileAccess.Read); FileStream fsWriter = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write); //定义一个字节数组,用来存储读取到的字节 byte[] buffer = new byte[1024]; int r = 0; while ((r = fsReader.Read(buffer, 0, buffer.Length)) != 0) { //r为每次读取文件的长度,当r=0表示文件已经全部读取 //将读取的字节输出到targetPath目录中 fsWriter.Write(buffer, 0, r); } //关闭文件流。 fsReader.Close(); fsWriter.Close(); //释放资源 fsReader.Dispose(); fsWriter.Dispose(); }
/// <summary>
/// 使用using关键字进行文件读取和写入操作,不需要自己关闭流资源 /// </summary> /// <param name="sourcePath">源路径</param> /// <param name="targetPath">目标路径</param> public static void CopyFile(string sourcePath, string targetPath) { using(FileStream fsReader=new FileStream(sourcePath,FileMode.OpenOrCreate,FileAccess.Read)) { using (FileStream fsWriter = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024]; int len=0; while ((len = fsReader.Read(buffer, 0, buffer.Length)) != 0) { fsWriter.Write(buffer, 0, len);//写入文件到指定目录 } } } } }}/使用StreamReader()和StreamWriter()方法进行文件操作///
StreamReader()和StreamWriter()主要用于对字符进行操作
string path = @"C:\Users\htao\Desktop\new.txt";
using (StreamReader sReader = new StreamReader(path, Encoding.UTF8)){ while (!sReader.EndOfStream) //判断是否读到流的末尾 { Console.WriteLine(sReader.ReadLine()); }}
using (StreamWriter sWriter = new StreamWriter(path, true, Encoding.UTF8))
{ sWriter.Write("hello world"); } Console.WriteLine("文件写入成功");