.Net C# File FileStream 文件操作

本文详细介绍了如何使用Java的File和FileStream进行文件创建、读写、复制、移动和删除,包括异步操作和路径处理技巧。涵盖了创建目录、文件操作示例和资源管理等内容。

文件操作是开发中基本的也是常用的功能需求,File类提供了文件创建、读取、写入、移动、复制、删除等一系列基本方法,我们可以直接使用。这篇文章记录下使用 File和FileStream 2个类进行基本文件操作。

创建目录:使用Directory静态类创建目录,需要重用目录对象是可以使用DirectoryInfo实例类型。

Directory.CreateDirectory(item);

处理文件目录等操作时请使用Path类辅助完成。尽量避免人为导致的错误。

Path.Combine(path1, "a.txt");

创建文件:使用File静态类创建文件(注意释放资源,关闭流),同样可以使用FileInfo实例类型。

//创建文件
FileStream fileStream = File.Create(file1, 1024, FileOptions.None);
//创建完文件后关闭流
fileStream.Close();

向文件写入或追加内容:

//向指定文件追加内容,如果不存在则创建
await File.AppendAllLinesAsync(file1, new List<string> { "dddd", "eeee", "ffff" });
File.AppendAllLines(file1, new List<string> { "dddd", "eeee", "ffff" });

文件拷贝、移动、删除方法:

//将文件复制到指定位置并指定文件名
File.Copy(file1, file4);
//将文件复制到指定位置并指定文件名,如果文件存在则覆盖
File.Copy(file2, file5, true);
//将文件移动到指定位置
File.Move(file3, file6);

//将复制成功后的源文件删除
File.Delete(file1);
File.Delete(file2);

完整示例代码:

class FileDemo
    {
        public static async Task DemoMain()
        {
            string path1 = @"E:\Test\1";
            string path2 = @"E:\Test\2";

            string file1 = Path.Combine(path1, "a.txt");
            string file2 = Path.Combine(path1, "b.txt");
            string file3 = Path.Combine(path1, "c.txt");
            string file4 = Path.Combine(path2, "d.txt");
            string file5 = Path.Combine(path2, "e.txt");
            string file6 = Path.Combine(path2, "f.txt");

            //如果目录不存在就创建目录
            IsCreateDir(path1, path2);

            //创建文件
            FileStream fileStream = File.Create(file1, 1024, FileOptions.None);
            //创建完文件后关闭流
            fileStream.Close();
            //创建并写入文件
            await File.WriteAllLinesAsync(file2, new List<string> { "aaaa", "bbbb", "cccc" });
            //向指定文件追加内容,如果不存在则创建
            await File.AppendAllLinesAsync(file1, new List<string> { "dddd", "eeee", "ffff" });
            //向指定文件追加字符串,如果不存在则创建
            await File.AppendAllTextAsync(file2, "gggg");
            //创建并写入文件
            await File.WriteAllBytesAsync(file3, Encoding.Default.GetBytes("hhhh"));
            //将文件复制到指定位置并指定文件名
            File.Copy(file1, file4);
            //将文件复制到指定位置并指定文件名,如果文件存在则覆盖
            File.Copy(file2, file5, true);
            //将文件移动到指定位置
            File.Move(file3, file6);

            //将复制成功后的源文件删除
            File.Delete(file1);
            File.Delete(file2);

            //读取文件中的内容
            string str1 = await File.ReadAllTextAsync(file4);
            string[] strs = await File.ReadAllLinesAsync(file5);
            string str2 = await File.ReadAllBytesAsync(file6)
                .ContinueWith(t =>
                {
                    t.Wait();
                    string result = Encoding.Default.GetString(t.Result);
                    return result;
                });
            Console.WriteLine($"file1内容读取-{str1}");
            Console.WriteLine($"file2内容读取-{string.Join(' ', strs)}");
            Console.WriteLine($"file3内容读取-{str2}");
        }
        /// <summary>
        /// 创建目录
        /// </summary>
        /// <param name="paths"></param>
        static void IsCreateDir(params string[] paths)
        {
            foreach (var item in paths)
            {
                //判断目录不存在则创建目录
                if (!Directory.Exists(item))
                    Directory.CreateDirectory(item);
            }
        }

    }

输出结果:

 

 IO类型的操作能使用异步方法的尽量使用异步方法,有助于提高应用程序资源使用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个堆栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值