• 编码实现>文件和输入输出(包括)>文件操作


    编码实现>文件和输入输出>文件操作>System.IO类介绍

    System.IO命名空间有重要的7个类。

    ·Directory:操作目录的静态方法

    ·DirectoryInfo:操作目录的实例方法

    ·DriverInfo:访问驱动器,以及驱动器详细的实例方法

    ·File:对文件进行操作的静态方法

    ·FileInfo:对文件惊喜操作的实例方法

    ·Path:以跨平台的方式处理目录字符串的方法和属性

    编码实现>文件和输入输出>文件操作>File类通过文件的创建和打开

    File类通过文件的创建和打开
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace CreateAndOpen
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath = @"C:\FileCreateOpenDemo.txt";
                
    //使用using,在语句执行完后自动释放资源。
                
    //使用Create方法创建文件。
                using (FileStream fs = File.Create(FilePath))
                {
                    
    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.WriteLine(
    "这是使用Create创建文件的方法");
                        sw.Flush();
                    }
                }
                
    if (File.Exists(FilePath))
                {
                    File.Delete(FilePath);
                }
                
    using (StreamWriter sw = File.CreateText(FilePath))
                {
                    sw.WriteLine(
    "这是使用CreateText方法创建文本文件的方法");
                    sw.Flush();
                }
                Console.WriteLine(
    "使用Open方法打开文件");
                
    using (FileStream fs = File.Open(FilePath, FileMode.Open))
                {
                    
    using (StreamReader sr = new StreamReader(fs))
                    {
                        Console.WriteLine(sr.ReadToEnd());
                    }
                }
                Console.WriteLine(
    "使用OpenRead方法打开文件");
                
    using (FileStream fs = File.OpenRead(FilePath))
                {
                    
    using (StreamReader sr = new StreamReader(fs))
                    {
                        Console.WriteLine(sr.ReadToEnd());
                    }
                }
                Console.WriteLine(
    "使用OpenWrite方法打开文件");
                
    using (FileStream fs = File.OpenWrite(FilePath))
                {
                    
    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.WriteLine(
    "使用OpenWrite方法写入文件");
                        sw.Flush();
                    }
                }
                Console.WriteLine(
    "使用OpenText方法打开文本文件");
                
    using(StreamReader sr=File.OpenText(FilePath))
                {
                    Console.WriteLine(sr.ReadToEnd());
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件操作>文件的追加

    描述:将指定的字符串追加到文件的结尾。

    AppendAllText方法
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace FileDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath=@"C:\FileDemo1.txt";
                
    if (File.Exists(FilePath))
                {
                    Console.WriteLine(
    "文件存在");
                }
                
    else
                {
                    Console.WriteLine(
    "文件不存在");
                }
                File.AppendAllText(FilePath, 
    "这是使用File类的AppendAllText方法添加字符串!"+Environment.NewLine);
                File.AppendAllText(FilePath, 
    "这是使用File类的AppendAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
                
    string str = File.ReadAllText(FilePath);
                Console.WriteLine(str);
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件操作>判断一个文件是否存在

    Exists方法
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace FileDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath=@"C:\FileDemo1.txt";
                
    if (File.Exists(FilePath))
                {
                    Console.WriteLine(
    "文件存在");
                }
                
    else
                {
                    Console.WriteLine(
    "文件不存在");
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件操作>文件的写入

    描述,将指定的字符串直接写入文件,WriteAllText会清除现存文件中已有的文本,写入新文本,而AppendAllText则是在现场文件中的尾部添加文本。

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

    namespace WriteAllText
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath = @"C:\FileDemo1.txt";
                File.WriteAllText(FilePath, 
    "这是使用File类的WriteAllText方法添加字符串!" + Environment.NewLine);
                File.WriteAllText(FilePath, 
    "这是使用File类的WriteAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
                
    string str = File.ReadAllText(FilePath);
                Console.WriteLine(str);
                Console.ReadLine();
            }
        }
    }


    类似的文件写入的方法

    WriteAllLines和WriteAllBytes方法
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace WriteAllLinesAndWriteAllBytes
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath = @"C:\FileDemo1.txt";
                
    string[] strs ="这是""使用""WriteAllLines""方法""添加""字符串" };
                File.WriteAllLines(FilePath, strs);
                File.WriteAllLines(FilePath, strs, Encoding.UTF8);                        
                
    string bytestr= "这是使用WriteAllBytes方法添加字节数组";
                
    byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
                File.WriteAllBytes(FilePath, bytes);
                
    string str = File.ReadAllText(FilePath);
                Console.WriteLine(str);
                Console.ReadLine();
            }
        }
    }



    编码实现>文件和输入输出>文件操作>文件的读取

    ReadAllBytes方法
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace WriteAllLinesAndWriteAllBytes
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath = @"C:\FileDemo1.txt";
                
    string[] strs ="这是""使用""WriteAllLines""方法""添加""字符串" };
                File.WriteAllLines(FilePath, strs);
                
    string[] str2 = File.ReadAllLines(FilePath);                        
                
    string bytestr= "这是使用WriteAllBytes方法添加字节数组";
                
    byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
                File.WriteAllBytes(FilePath, bytes);
                
    byte[] bytes2 = File.ReadAllBytes(FilePath);
                
    string str = File.ReadAllText(FilePath);
                Console.WriteLine(str);
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件操作>文件的复制,删除,移动

    File类没有提供对文件进行重命名的方法,可以通过对Move的操作来变通实现。

    文件的复制,删除,移动
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace CopyDeleteAndMoveFile
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string SourceFilePath = @"C:\FileDemo1.txt";
                
    const string DestFilePath=@"C:\FileDemoCopy1.txt";
                
    if (!File.Exists(SourceFilePath))
                {
                    File.WriteAllText(SourceFilePath,
    "这是一个示范文件的复制,移动,删除的例子");
                 }
                 Console.WriteLine(
    "文件的复制操作");
                 File.Copy(SourceFilePath, DestFilePath, 
    true);
                 Console.WriteLine(
    "文件的删除操作");
                 File.Delete(DestFilePath);
                 Console.WriteLine(
    "文件的移动操作");
                 File.Move(SourceFilePath, DestFilePath);
                 Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>目录操作类Directory>目录的创建

    代码
    //指定路径名创建文件夹
                public static DirectoryInfo CreateDirectory(string path);
                
    //指定路径名,且指定Windows安全性
                public static DirectoryInfo CreateDirectory(string path,DirectorySecurity directorySecurity);



    编码实现>文件和输入输出>目录操作类Directory>目录的移动和删除

    目录的移动和删除
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace DirectoryDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string sourceFolderPath = @"C:\Directorydemo";
                
    const string destFolderPath = @"C:\DirectorydemoDest";

                
    if (!Directory.Exists(sourceFolderPath))
                {
                    
    //创建指定路径的目录
                    DirectoryInfo di = Directory.CreateDirectory(sourceFolderPath);
                }
                
    if (Directory.Exists(destFolderPath))
                {
                    
    //删除指定目录,这目录必须是空目录。后面的true表示递归删除目录下的目录
                    Directory.Delete(destFolderPath,true);
                }
                
    //从源文件夹转到目标文件夹
                Directory.Move(sourceFolderPath, destFolderPath);            
            }
        }
    }


    编码实现>文件和输入输出>目录操作类Directory>获取目录的位置

    获取目录的位置
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace GetDirectories
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FolderPath = @"C:\dell\drivers";
                
    //获取当前工作目录。
                Console.WriteLine("当前的工作目录为{0}", Directory.GetCurrentDirectory());
                
    //获取以R字符开头的顶层目录,可以指定SearchOption枚举来获取所有的子目录。
                string[] strs = Directory.GetDirectories(FolderPath, "R*", SearchOption.TopDirectoryOnly);
                
    foreach (string str in strs)
                {
                    Console.WriteLine( str);
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>目录操作类Directory>获取目录中的文件列表

    获取目录中的文件列表
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace GetFiles
    {
        
    class Program
        {

            
    static void Main(string[] args)
            {
                
    const string FolderPath = @"C:\dell\drivers";
                
    //获取C:\dell\drivers下的所有文件名,包括子目录。
                string[] strs = Directory.GetFiles(FolderPath, "*", SearchOption.AllDirectories);
                
    foreach (string str in strs)
                {
                    Console.WriteLine(str);
                }
                
    //获取c:\dell\drivers下的所有文件名,目录名。
                string[] fileAndDirectorys = Directory.GetFileSystemEntries(FolderPath);
                
    foreach (string str in fileAndDirectorys)
                {
                    Console.WriteLine(str);
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件夹信息类DirectoryInfo>目录的创建,移动,删除,获取目录信息

    DirectoryInfo>目录的创建,移动,删除,获取目录信息
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace DirectoryInfoDemo
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string sourcePath = @"C:\DirectoryInfoDemo";
                
    const string destPath = @"C:\DirectoryInfoDemo2";
                
    //使用目录构造DirectoryInfo。
                DirectoryInfo di = new DirectoryInfo(sourcePath);
                
    if (!di.Exists)
                {
                    di.Create();
                }
                
    //创建子目录SubDirectory
                di.CreateSubdirectory("SubDirectory");
                Console.WriteLine(
    "{0}的信息为:", di.FullName);
                Console.WriteLine(
    "父目录:{0}", di.Parent.FullName);
                Console.WriteLine(
    "根目录:{0}", di.Root.FullName);
                Console.WriteLine(
    "属性:{0}", di.Attributes.ToString());
                Console.WriteLine(
    "建立时间:{0}", di.CreationTime.ToString());
                Console.WriteLine(
    "最后一次访问时间{0}", di.LastAccessTime.ToString());
                Console.WriteLine(
    "最后一次写入时间{0}", di.LastWriteTime.ToString());
                Console.WriteLine(
    "文件夹己经被移动!");
                
    if (Directory.Exists(destPath))
                {
                    Directory.Delete(destPath,
    true);
                }
                
    //移动文件夹  
                di.MoveTo(destPath);
                Console.WriteLine(
    "文件夹己经被删除!");
                
    //删除文件夹
                 if (Directory.Exists(di.FullName + @"\SubDirectory"))
                {
                    Directory.Delete(di.FullName 
    + @"\SubDirectory",true);
                }
                di.Delete();            
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>文件夹信息类DirectoryInfo>获取文件,子目录的位置

    DirectoryInfo>获取文件,子目录的位置
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace GetFilesAndDirectories
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string windowsPath = @"C:\WINDOWS";
                DirectoryInfo di 
    = new DirectoryInfo(windowsPath);
                
    //获取C:\Windows下的所有的顶层文件夹
              
    //  DirectoryInfo[] dis = di.GetDirectories();
                
    //通过指定搜索模式,指定SearchOption.AllDirectories,表示搜索所有子目录中的目录
                DirectoryInfo[] dis = di.GetDirectories("*",SearchOption.AllDirectories);
                DisplayResult(dis);
                
    //获取顶层目录中的所有文件。
                
    //FileInfo[] fis = di.GetFiles();
                FileInfo[] fis = di.GetFiles("*", SearchOption.TopDirectoryOnly);
                DisplayResult(fis);
                
    //获取所有的FileSystemInfo对象。
                FileSystemInfo[] fsi = di.GetFileSystemInfos("*");
                DisplayResult(fsi);
                Console.ReadLine();
               }
            
    static void DisplayResult(DirectoryInfo[] dis)
            {
                
    foreach (DirectoryInfo di in dis)
                {
                    Console.WriteLine(di.FullName);
                }
            }
            
    static void DisplayResult(FileInfo[] fi)
            {
                
    foreach (FileInfo fs in fi)
                {
                    Console.WriteLine(fs.FullName);
                }
            }
            
    static void DisplayResult(FileSystemInfo[] fis)
            {
                
    foreach (FileSystemInfo fsi in fis)
                {
                    Console.WriteLine(fsi.FullName);
                }
            }
        }
    }



    合乎自然而生生不息。。。
  • 相关阅读:
    <<信息学奥赛一本通>> 昆虫养殖 题解
    C++ primer 第七章 练习7.35 类作用域练习
    C++ primer 第六章 练习6.56 函数指针练习
    P1145 约瑟夫
    C++ 查看auto delctype 后变量的类型。(小技巧)
    Educational Codeforces Round 24 题解
    HDU 5279 分治NTT 图的计数
    BZOJ 3473
    BZOJ 3514 LCT+主席树
    看无可看 分治FFT+特征值方程
  • 原文地址:https://www.cnblogs.com/samwu/p/1851642.html
Copyright © 2020-2023  润新知