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("文件写入成功");