zoukankan      html  css  js  c++  java
  • IO

    实现日志写入、读取,文本复制、删除,递归获取文件夹下所有文件

    program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestIO
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    MyIO.ReadInfo();
    
                    MyIO.Write();
                    MyIO.Read();
                    MyIO.ReadOneLine();
                    MyIO.Copy();
                    MyIO.Delete();
                    MyIO.RecursionShow();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    }

    MyIO.cs

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Configuration;
    
    namespace TestIO
    {
        public class MyIO
        {
            private static string LogPath = ConfigurationManager.AppSettings["LogPath"];
    
            /// <summary>
            /// 读取文件夹  文件信息
            /// </summary>
            public static void ReadInfo()
            {
                DirectoryInfo directory = new DirectoryInfo(LogPath);//不存在不报错  注意exists属性,为true时存在,为false时不存在
                Console.WriteLine(string.Format("{0} {1} {2}", directory.FullName, directory.CreationTime, directory.LastWriteTime));
    
                FileInfo fileInfo = new FileInfo(Path.Combine(LogPath, "info.txt"));
                Console.WriteLine(string.Format("{0} {1} {2}", fileInfo.FullName, fileInfo.CreationTime, fileInfo.LastWriteTime));
            }
    
            public static void Write()
            {
                string fileName = "info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
                string msg = "这里是写入日志的内容";
    
                StreamWriter sw = null;
                try
                {
                    if (Directory.Exists(LogPath))
                    {
                        sw = File.AppendText(totalPath);
                    }
                    else
                    {
                        Directory.CreateDirectory(LogPath);
                        sw = File.CreateText(totalPath);
                    }
                    sw.WriteLine(msg);
                }
                finally
                {
                    if (sw != null)
                    {
                        sw.Flush();
                        sw.Close();
                        sw.Dispose();
                    }
                }
            }
    
            /// <summary>
            /// 一次性读完所有内容
            /// </summary>
            public static void Read()
            {
                string fileName = @"info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
    
                if (File.Exists(totalPath))
                {
                    string[] results = File.ReadAllLines(totalPath);
                    foreach (string result in results)
                    {
                        Console.WriteLine(result);
                    }
                }
            }
    
    
    
            /// <summary>
            /// 一次性读完所有内容
            /// </summary>
            public static void ReadOneLine()
            {
                string fileName = @"info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
    
                if (File.Exists(totalPath))
                {
                    using (StreamReader sr = new StreamReader(totalPath))
                    {
                        string oneLine = sr.ReadLine();
                        while (oneLine != null)
                        {
                            Console.WriteLine(oneLine);
                            oneLine = sr.ReadLine();
                        }
                    }
                }
            }
    
            /// <summary>
            /// 读大量数据
            /// </summary>
            public void ReadHug()
            {
                Byte[] byteData = new byte[100];
                char[] charData = new char[1000];
                string fileName = @"info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
                FileStream file = new FileStream(totalPath, FileMode.Open);
                file.Seek(0, SeekOrigin.Begin);
                //byData传进来的字节数组,用以接受FileStream对象中的数据,
                //第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,
                //最后一个参数规定从文件读多少字符.
                file.Read(byteData, 0, 100);
                Decoder d = Encoding.Default.GetDecoder();
                d.GetChars(byteData, 0, byteData.Length, charData, 0);
                Console.WriteLine(charData);
                file.Close();
            }
    
            /// <summary>
            /// 对文本进行复制
            /// </summary>
            public static void Copy()
            {
                string fileName = "info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
    
                if (File.Exists(totalPath))
                {
                    File.Copy(totalPath, totalPath.Replace("info.txt", "info_copy.txt"));
                }
            }
    
            /// <summary>
            /// 删除文本
            /// </summary>
            public static void Delete()
            {
                string fileName = "info.txt";
                string totalPath = Path.Combine(LogPath, fileName);
    
                if (File.Exists(totalPath))
                {
                    File.Delete(totalPath);
                }
            }
    
            /// <summary>
            /// 使用递归方式找全部文件
            /// </summary>
            public static void RecursionShow()
            {
                string rootPath = @"E:APICloud";
                DirectoryInfo dirRoot = new DirectoryInfo(rootPath);
                List<FileInfo> fileInfoList = new List<FileInfo>();
                fileInfoList = GetFileByDir(dirRoot, fileInfoList);
            }
    
            private static List<FileInfo> GetFileByDir(DirectoryInfo dirParent, List<FileInfo> fileInfoList)
            {
                FileInfo[] fileArray = dirParent.GetFiles();
                if (fileArray != null && fileArray.Length > 0)
                {
                    fileInfoList.AddRange(fileArray.ToList());
                }
                DirectoryInfo[] dirArray = dirParent.GetDirectories();
                if (dirArray != null && dirArray.Length > 0)
                {
                    foreach (DirectoryInfo dir in dirArray)
                    {
                        GetFileByDir(dir, fileInfoList);
                    }
                }
                return fileInfoList;
            }
        }
    }

    .config

      <appSettings>
        <!--日志路径-->
        <add key="LogPath" value="E:"/>
      </appSettings>
  • 相关阅读:
    JAVA编程规则【转自java编程思想】
    诊断 Java 代码: 轻松掌握 Java 泛型
    Linux开启telnet远程登录服务全攻略
    TCP详解
    UNIX环境高级编程文件描述符浅析
    DHCP与BOOTP有什么区别
    Linux 多播(组播)例程
    你所不知道的传输层
    虚电路方式,数据报方式
    java foreach 使用
  • 原文地址:https://www.cnblogs.com/JarvisNote/p/5078452.html
Copyright © 2011-2022 走看看