C#文件操作的demo

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

猜你喜欢

转载自www.cnblogs.com/ww7018/p/9206054.html