C#先判断是否存在再创建文件夹或文件与递归计算文件夹大小

文件夹,文件这是常见的,怎么创建?

要不要先判断是否存在?非常非常基础的知识点

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

namespace dazilianxi.wenjian
{
    public  class WenJianLei
    {
        const string main_Dir = @"D:/WenTest";
        const string wenjianpath = @"D:\WenTest\second.txt";
        //根据文件夹全路径创建文件夹
        public static void CreateDir(string subdir)
        {
            string path = main_Dir + "/" + subdir;
            if (Directory.Exists(path))
            {
                Console.WriteLine("此文件夹已经存在,无需创建!");
            }
            else
            {
                Directory.CreateDirectory(path);
                Console.WriteLine(path+" 创建成功!");
            }
        }
        //根据文件夹名称创建文件夹
        public static void CreateNameDir(string name)
        {
            if(name.Length!=0)
            {
                CreateDir(name);
            }
            else
            {
                Console.WriteLine("必须指定文件夹名称,才能创建!");
            }
        }

        public static void CreateWenJian()
        {
            if (!File.Exists(wenjianpath))
            {
                Console.WriteLine("文件创建成功!");
                TextWriter tw = new StreamWriter(wenjianpath);
                tw.WriteLine("创建完文件加的第一行~~");
                tw.Close();
            }
            else
            {
                TextWriter tw = new StreamWriter(wenjianpath,true);
                tw.WriteLine("已经存在文件,再加一行吧~~");
                tw.Close();
            }
        }
       //文件大小计算
        public static void CreateMoreSize()
        {
            long size = GetDirectoryLength(@"D:\WenTest");
            if (!File.Exists(wenjianpath))
            {
                if (size <= 1)
                {
                    TextWriter tw = new StreamWriter(wenjianpath);
                    tw.WriteLine("创建完文件加的第一行~~");
                    tw.Close();
                }
                else
                {
                    Console.WriteLine("无法创建,已经超过限定大小了~~");
                }

            }
            else
            {
                TextWriter tw = new StreamWriter(wenjianpath, true);
                tw.WriteLine("已经存在文件,再加一行吧~~");
                tw.Close();
            }
        }
        public static long GetDirectoryLength(string path)
        {
            if (!Directory.Exists(path))
            {
                return 0;
            }

            long size = 0;

            //遍历指定路径下的所有文件
            DirectoryInfo di = new DirectoryInfo(path);
            foreach (FileInfo fi in di.GetFiles())
            {
                size += fi.Length;
            }

            //遍历指定路径下的所有文件夹
            DirectoryInfo[] dis = di.GetDirectories();
            if (dis.Length > 0)
            {
                for (int i = 0; i < dis.Length; i++)
                {
                    size += GetDirectoryLength(dis[i].FullName);
                }
            }

            return size;
        }
    }
}

先判断文件夹是否存在,再决定是否创建文件夹

如果文件夹不存在,就创建新文件夹。
如果文件夹已存在,提示已经存在。

using System.IO;

namespace ConsoleApplication26
{
    class Program
    {
        //文件存放的根文件夹
        const string main_Dir = @"F:/Test";

        static void Main(string[] args)
        {
            CreateNamedDir("User01");
            Console.ReadKey();
        }

        //根据文件夹全路径创建文件夹
        private static void CreateDir(string subdir)
        {
            string path = main_Dir + "/" + subdir;
            if (Directory.Exists(path))
            {
                Console.WriteLine("此文件夹已经存在,无需创建!");
            }
            else
            {
                Directory.CreateDirectory(path);
                Console.WriteLine(path+ "创建成功!");
            }
        }

        //根据文件夹名称创建文件夹
        private  static void CreateNamedDir(string name)
        {
            if (name.Length != 0)
            {
                CreateDir(name);
            }
            else
            {
                Console.WriteLine("必须规定创建文件夹的名称");
            }
        }
    }
}

结果:

如果文件夹不存在,多了一个新的文件夹。

如果文件夹已存在,提示已经存在。

先判断文件是否存在,再决定是否创建文件

如果文件不存在,创建文件并在文件中写入一行内容。
如果文件存在,在当前文件中追加一行内容。

using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"F:\Test\second.txt";
            if (!File.Exists(path))
            {
                //File.Create(path);
                TextWriter tw = new StreamWriter(path);
                tw.WriteLine("创建完文件加的第一行~~");
                tw.Close();
            }
            else
            {
                TextWriter tw = new StreamWriter(path,true);
                tw.WriteLine("已经存在文件,再加一行吧~~");
                tw.Close();
            }
        }
    }
}

结果:

如果文件不存在,创建文件并在文件中写入一行内容。

如果文件存在,在当前文件中追加一行内容。

注意:

File.Create(path)返回FileStream类型
TextWriter tw = new StreamWriter(path)返回TextWriter类型
2行语句不能同时存在,否则报错"正由另一进程使用,因此该进程无法访问此文件"。

创建文件之前计算文件夹总大小,如果大小超过规定,放弃创建文件

using System;
using System.IO;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"F:\Test\third.txt";

            //计算指定文件夹的大小
            long size = GetDirectoryLength(@"F:\Test");
            if (!File.Exists(path))
            {
                if (size <= 500)
                {
                    TextWriter tw = new StreamWriter(path);
                    tw.WriteLine("创建完文件加的第一行~~");
                    tw.Close();
                }
                else
                {
                    Console.WriteLine("无法创建,已经超过限定大小了~~");
                }

            }
            else
            {
                TextWriter tw = new StreamWriter(path, true);
                tw.WriteLine("已经存在文件,再加一行吧~~");
                tw.Close();
            }

            //Console.WriteLine(size.ToString());
            Console.ReadKey();
        }

        //递归计算文件夹大小
        static long GetDirectoryLength(string path)
        {
            if (!Directory.Exists(path))
            {
                return 0;
            }

            long size = 0;

            //遍历指定路径下的所有文件
            DirectoryInfo di = new DirectoryInfo(path);
            foreach (FileInfo fi in di.GetFiles())
            {
                size += fi.Length;
            }

            //遍历指定路径下的所有文件夹
            DirectoryInfo[] dis = di.GetDirectories();
            if (dis.Length > 0)
            {
                for (int i = 0; i < dis.Length; i++)
                {
                    size += GetDirectoryLength(dis[i].FullName);
                }
            }

            return size;
        }
    }
}

结果:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • C#创建临时文件的方法

    本文实例讲述了C#创建临时文件的方法.分享给大家供大家参考.具体分析如下: C#可以通过Path.GetTempFileName获得一个临时文件,然后创建自己的临时文件 using System; using System.IO; class MainClass { static void Main() { string tempFile = Path.GetTempFileName(); Console.WriteLine("Using " + tempFile); using(Fi

  • 如何使用C#代码创建快捷方式文件详解

    前言 快捷方式是一种特殊的文件,扩展名为 lnk.有很多种方式来创建快捷方式,首先我们看一下快捷方式是什么.对快捷方式点右键,选择属性菜单,在弹出的属性对话框的常规Tab中可以看到,文件类型是快捷方式(.lnk),所以快捷方式本质上是lnk文件. 不过使用 C# 代码创建一个却并不那么容易,本文分享三种不同的方式创建快捷方式. 随处可用的代码 这是最方便的方式了,因为这段代码随便放到一段代码中就能运行: /// <summary> /// 为当前正在运行的程序创建一个快捷方式. /// <

  • C# 修改文件的创建、修改和访问时间的示例

    目录 File 类 举例说明 C#FileInfo类签名 C#FileInfo构造函数 C#FileInfo属性 C#FileInfo方法 举例说明 C#实现修改文件的创建.修改和访问时间方法,主要是用到了File类的SetCreationTime.SetLastWriteTime.SetLastAccessTime几个方法.我们先来介绍一下File类: File 类 命名空间:System.IO 程序集:System.IO.FileSystem.dll 提供用于创建.复制.删除.移动和打开单一

  • c#文件的复制,移动,创建(实例代码)

    复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) {     if (!Page.IsPostBack)     {         this.List();     } } protected void Button1_Click(object sender, EventArgs e) {     if (TextBox2.Text == "")     {         Response.Write(&

  • C# 创建文本文件写入读取实现代码

    第一次运行时: 第二次运行时: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace 文件操作 { class Program { static void Main(string[] args) { //创建一个文本文件,最好先判断一下 StreamWriter sw; if (!File.Exists(

  • C#获取文件创建时间的方法

    本文实例讲述了C#获取文件创建时间的方法.分享给大家供大家参考.具体如下: C#获取文件创建时间,主要用到了FileInfo的CreattionTime属性 using System; using System.IO; class Class1 { static void Main(string[] args) { string[] cla = Environment.GetCommandLineArgs(); if (cla.GetUpperBound(0) == 2) { FileInfo

  • c# 文件(夹)创建与删除

    复制代码 代码如下: /删除文件夹,参数文件夹路径 protected void DeleteDirectory(string dir,bool deleteSubDir) { try { Directory.Delete(dir, deleteSubDir); } catch (Exception e) { logger.Error("DeleteDirectory Error dir = " + dir, e); throw new Exception("DeleteDi

  • C#进行文件读写、创建、复制、移动、删除的方法

    本文实例讲述了C#进行文件读写.创建.复制.移动.删除的方法.分享给大家供大家参考.具体分析如下: 1.文件夹创建.移动.删除 //创建文件夹 Directory.CreateDirectory(Server.MapPath("a")); Directory.CreateDirectory(Server.MapPath("b")); Directory.CreateDirectory(Server.MapPath("c")); //移动b到a D

  • C#先判断是否存在再创建文件夹或文件与递归计算文件夹大小

    文件夹,文件这是常见的,怎么创建? 要不要先判断是否存在?非常非常基础的知识点 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace dazilianxi.wenjian { public class WenJianLei { const string main_Dir = @"D:/WenTest"; const

  • C#程序中创建、复制、移动、删除文件或文件夹的示例

    创建文件或文件夹 您可通过编程方式在您的计算机上创建文件夹.子文件夹和子文件夹中的文件,并将数据写入文件. public class CreateFileOrFolder { static void Main() { string folderName = @"c:\Top-Level Folder"; string pathString = System.IO.Path.Combine(folderName, "SubFolder"); string pathSt

  • 完美解决spring websocket自动断开连接再创建引发的问题

    问题:由于 web session 超时时间为 30 分钟,如用户在 web session 规定时间内没有退出系统,但由于其它原因 用户却断开的 websocket 的连接,如果用户还要聊天或是其它 websocket 方面的操作,那么就只能重新连接... 看代码: var socket; var $ = function() { return document.getElementById(arguments[0]); } var log = function(msg) { $("log&q

  • 如何利用python创建、读取和修改CSV数据文件

    目录 1 写入CSV文件 2 读取CSV文件 3 修改CSV文件 总结 简单展示如何利用python中的pandas库创建.读取.修改CSV数据文件 1 写入CSV文件 import numpy as np import pandas as pd # -----create an initial numpy array----- # data = np.zeros((8,4)) # print(data.dtype) # print(type(data)) # print(data.shape)

  • PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)

    复制代码 代码如下: <? /** * 操纵文件类 * * 例子: * FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 * FileUtil::createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件 * FileUtil::createFile('b/1/2/3.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 * FileUtil::copyDir('b','d/e')

  • php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

    总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析 计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可以看出,如果需要先打开文件的话,filesize可能就会是这样的形式了filesize($filehandle) 向客户端回送数据的是,记得要设置一个buffer,用来指定每次向客户端输出多少数据,如:$buffer=1023.如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲

  • python之文件的读写和文件目录以及文件夹的操作实现代码

    为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用内存.举个例子,对文本文件读取: file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) Python读写文件实际操作的五大步骤 一.打开文件 Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你

  • ASP FSO文件操作函数代码(复制文件、重命名文件、删除文件、替换字符串)

    FSO文件(File)对象属性 DateCreated 返回该文件夹的创建日期和时间 DateLastAccessed 返回最后一次访问该文件的日期和时间 DateLastModified 返回最后一次修改该文件的日期和时间 Drive 返回该文件所在的驱动器的Drive对象 Name 设定或返回文件的名字 ParentFolder 返回该文件的父文件夹的Folder对象 Path 返回文件的绝对路径,可使用长文件名 ShortName 返回DOS风格的8.3形式的文件名 ShortPath 返

  • Servlet实现文件上传,可多文件上传示例

    一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip:  点击打开链接 2)  commons-io-2.3-bin.zip:    点击打开链接 接着把这两个jar包放到 lib文件夹下: 二:文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded 比如: &l

  • SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例

    基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 文件上传项目的源码下载地址:demo 一.配置文件: SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->

随机推荐