C#中的文件操作类

一.File类常见的操作方法

(1).public static FileStream Create(string path):在指定路径中创建或覆盖文件,path:要创建的文件的路径及名称。

(2).public static StreamWriter AppendText(string path):创建一个 System.IO.StreamWriter,它将 UTF-8 编码文本追加到现有文件;path:要向其中追加内容的文件的路径。

(3).public static void Delete(string path): 删除指定的文件。

(4).public static bool Exists(string path):确定指定的文件是否存在。

(5).public static FileStream Open(string path, FileMode mode):打开指定路径上的 System.IO.FileStream,具有读/写访问权限。

示例:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFile
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fs = null;
            StreamWriter writer = null;
            string path = "D:\\test.txt";
            if(!File.Exists(path))
            {
                fs = File.Create(path);
                Console.WriteLine("新建一个文件:{0}", path);
            }
            else
            {
                fs = File.Open(path, FileMode.Open);
                Console.WriteLine("文件已存在,直接打开");
            }
            writer = new StreamWriter(fs);
            writer.WriteLine("测试文本");
            Console.WriteLine("像文件中写入文本数据流");
            writer.Flush();
            writer.Close();
            Console.WriteLine("关闭数据流");
            Console.ReadKey();
        }
    }
}

 二.Directory常见的操作方法

Directory类是用来创建、移动、删除和枚举所有目录或子目录的静态类,下面是它常见方法的使用:

(1). public static DirectoryInfo CreateDirectory(string path):在指定路径创建所有目录和子目录。

(2).public static void Delete(string path):从指定路径删除空目录(path:要移除的空目录的名称。 此目录必须为可写或为空)。

(3).public static void Delete(string path, bool recursive):删除指定的目录并(如果指示)删除该目录中的所有子目录和文件(recursive:若要移除 path 中的目录、子目录和文件,则为 true;否则为 false)

(4).public static string[] GetFiles(string path):返回指定目录中文件的名称(包括其路径)。

(5).public static string GetCurrentDirectory():获取应用程序的当前工作目录。

(6).public static void Move(string sourceDirName, string destDirName):将文件或目录及其内容移到新位置(sourceDirName:要移动的文件或目录的路径。destDirName:指向 sourceDirName 的新位置的路径。 如果 sourceDirName 是一个文件,则 destDirName 也必须是一个文件名)。

示例:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyDirectory
{
    class Program
    {
        static void Main(string[] args)
        {
            string dirPath = "D:\\DirectorySample";
            string filePath = String.Format("{0}\\{1}", dirPath, "test.txt");
            if(!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
                Console.WriteLine("创建一个目录:{0}", dirPath);
            }
            else
            {
                Console.WriteLine("目录{0}已存在", dirPath);
            }
            if(!File.Exists(filePath))
            {
                File.Create(filePath);
                Console.WriteLine("创建一个文件:{0}", filePath);
            }
            else
            {
                Console.WriteLine("文件:{0}已存在", filePath);
            }         
            Console.ReadKey();
        }
    }
}

三.通过流来对文件进行操作

流(Stream)可以理解为内存中的字节序列,Stream是所有流的抽象基类,流涉及三个基本操作:

(1).对流进行读取:将流中的数据读取到具体的数据结构中(如数组中);

(2).对流进行写入:把数据结构中的数据写入到流中;

(3).对流进行查找:对流内部的当前位置进行查询和修改

示例:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyStream
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = "D:\\test.txt";
            string msg = "Hello World";
            FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate);
            byte[] msgAsByteArray = Encoding.Default.GetBytes(msg);
            Console.WriteLine("开始写入{0}到文件中", msg);
            fileStream.Write(msgAsByteArray, 0, msgAsByteArray.Length);
            //重置内部流的位置
            fileStream.Seek(0, SeekOrigin.Begin);
            Console.WriteLine("写入文件中的数据为:");
            byte[] bytesFromFile = new byte[msgAsByteArray.Length];
            fileStream.Read(bytesFromFile, 0, msgAsByteArray.Length);
            Console.WriteLine(Encoding.Default.GetString(bytesFromFile));
            Console.ReadKey();
            
        }
    }
}

四.通过读写器操作流

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyStream
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = "D:\\test.txt";
            string msg = "Hello World";
            FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
            //创建StreamWriter对象
            StreamWriter streamWriter = new StreamWriter(fileStream);
            streamWriter.Write(msg);
            //创建StreamReader对象
            StreamReader streamReader = new StreamReader(fileStream);
            Console.WriteLine("写入到文件中的数据为:{0}", streamReader.ReadToEnd());
            streamWriter.Close();
            streamReader.Close();
            Console.ReadKey();
        }
    }
}

 

转载于:https://www.cnblogs.com/QingYiShouJiuRen/p/11231436.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值