溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IO操作(C#)

發布時間:2020-04-05 18:58:29 來源:網絡 閱讀:329 作者:Aonaufly 欄目:編程語言

在一些游戲當中 , 通常將一些參數寫在配置里面 , 無論是XML  , EXCEL , TXT , BIN …… 我相信都會用到其中的一種 。首先 , XML , BIN 對于策劃人員來說就很容易配置錯誤了。如果能用程序將Excel里面的數據轉化為Txt , Bin , Xml數據, 就很爽了 , 關于Excel數據的讀寫我在前幾篇博文中寫過。 這里就涉及到了I/O的操作 。廢話不多說 , 上代碼 . 這里寫的都是同步I/O操作 。

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

namespace ComprehensiveTest.com.myio
{
    public class IoManager
    {
        private static IoManager instance = null;

        public static IoManager Instance
        {
            get {
                if (IoManager.instance == null)
                {
                    IoManager.instance = new IoManager();
                }
                return IoManager.instance; 
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="targetPath"></param>
        /// <returns></returns>
        public bool CreateFile(string targetPath)
        {
            if (File.Exists(targetPath))
            {
                return true;
            }
            else
            {
                try
                {
                    //使用這2種方法都可以
                    //FileStream file = File.Create(targetPath);
                    FileStream file = new FileStream(targetPath, FileMode.Create);
                    file.Close();
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("創建文件{0},失敗 , 原因 : {1} ", targetPath, e.ToString());
                    return false;
                }
            }
        }
        /// <summary>
        /// 獲得電腦所有的驅動盤
        /// </summary>
        /// <returns></returns>
        public string[] GetMyLogicalDrives()
        {
            return Directory.GetLogicalDrives();
        }
        /// <summary>
        /// 移動數據
        /// </summary>
        /// <param name="oldPath"> 原始的路徑  </param>
        /// <param name="newPath"> 新的路徑 </param>
        /// <returns> 操作是否成功 </returns>
        public bool MoveFile(string oldPath, string newPath)
        {
            if (File.Exists(oldPath))
            {
                try
                {
                    File.Move(oldPath, newPath);
                    return true;
                }
                catch (Exception e)
                { 
                    Console.WriteLine("移動文件{0},失敗 , 原因 : {1} " , oldPath , e.ToString() );
                    return false;
                }
            }
            else
            {
                Console.WriteLine("Error , {0}文件不存在?。?! " , oldPath );
                return false;
            }
        }
        /// <summary>
        /// 復制一個文件
        /// </summary>
        /// <param name="oldPath"></param>
        /// <param name="newPath"></param>
        /// <returns></returns>
        public bool CopyFile(string oldPath, string newPath)
        {
            if (File.Exists(oldPath))
            {
                try
                {
                    File.Copy(oldPath, newPath);
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("復制文件{0},失敗 , 原因 : {1} ", oldPath, e.ToString());
                    return false;
                }
            }
            else
            {
                Console.WriteLine("Error , {0}文件不存在?。?! ", oldPath);
                return false;
            }
        }
        /// <summary>
        /// 刪除一個文件
        /// </summary>
        /// <param name="targetPath"></param>
        /// <returns></returns>
        public bool DeleteFile( string targetPath )
        {
            if(File.Exists( targetPath ))
            {
                try
                {
                    File.Delete(targetPath);
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("刪除文件{0},失敗 , 原因 : {1} ", targetPath, e.ToString());
                    return false;
                }
            }
            else
            {
                Console.WriteLine("Error , {0}文件不存在?。?! ", targetPath);
                return false;
            }
        }
        /// <summary>
        /// 創建一個文件夾
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public bool CreateFolder(string path)
        {
            if (Directory.Exists(path))
            {
                Console.WriteLine("文件夾{0}已經存在", path);
                return true;
            }
            else
            {
                try
                {
                    DirectoryInfo dirInfo = Directory.CreateDirectory(path);
                    Console.WriteLine("創建文件夾成功 , 創建時間為{0}", Directory.GetCreationTime(path));
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("創建文件夾失敗 , 失敗原因{0}", e.ToString());
                    return false;
                }
            }
        }
        /// <summary>
        /// 刪除文件夾
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public bool DeleteFolder(string path)
        {
            if (Directory.Exists(path))
            {
                try
                {
                    Directory.Delete(path);
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("刪除文件夾失敗 , 失敗原因{0}", e.ToString());
                    return false;
                }
            }
            else
            {
                return true;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="oldPath"></param>
        /// <param name="newPath"></param>
        /// <returns></returns>
        public bool MoveFolder(string oldPath , string newPath)
        {
            if (Directory.Exists(oldPath))
            {
                try
                {
                    Directory.Move(oldPath, newPath);
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine("移動文件夾{0},失敗 , 原因 : {1} ", oldPath, e.ToString());
                    return false;
                }
            }
            else
            {
                Console.WriteLine("Error , {0}文件夾不存在?。?! ", oldPath);
                return false;
            }
        }
        /// <summary>
        /// 讀取文件( 一個個讀 )老是在流以外 , 無法讀到正確的值
        /// </summary>
        /// <param name="targetPath"></param>
        /// <returns></returns>
        public bool ReadOneByOneTest(string targetPath)
        {
            if (File.Exists(targetPath))
            {
                FileStream fs = new FileStream(targetPath, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                br.BaseStream.Seek(0, SeekOrigin.Begin); //將指針設到開頭
                while (br.BaseStream.Position < br.BaseStream.Length)
                {
                    try
                    {
                        Console.WriteLine(br.ReadString());
                    }
                    catch (EndOfStreamException e)
                    {
                        Console.WriteLine("已經到了結尾 {0}", e.ToString());
                    }
                }
                br.Close();
                fs.Close();
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 讀取文本
        /// </summary>
        /// <param name="targetPath"></param>
        /// <returns></returns>
        public bool ReadCommon(string targetPath)
        {
            if (File.Exists(targetPath))
            {
                //using (StreamReader sr = File.OpenText(targetPath)) // 讀中文將亂碼
                using( StreamReader sr = new StreamReader( targetPath , UnicodeEncoding.GetEncoding("GB2312"))) // 解決中文亂碼問題
                {
                    string readStr;
                    while ((readStr = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(readStr);
                    }
                    sr.Close();
                }
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="targetPath"></param>
        /// <param name="content"></param>
        /// <param name="isNendWarp"></param>
        /// <returns></returns>
        public bool WriteCommon(string targetPath , string content , bool isNendWarp )
        {
            if (File.Exists(targetPath))
            {
                //using (StreamWriter sw = File.AppendText(targetPath)) // 中文亂碼
                using( StreamWriter sw = new StreamWriter( targetPath , true ,UnicodeEncoding.GetEncoding("GB2312"))) // 解決中文亂碼問題
                {
                    if (isNendWarp)
                    {
                        sw.WriteLine(content);
                    }
                    else
                    {
                        sw.Write(content);
                    }
                    sw.Close();
                }
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}

 StreamWriter( targetPath , true ,UnicodeEncoding.GetEncoding("GB2312"))

第二個參數為false : 表示覆蓋寫入

這里我都測過了 , OK的 , 有一個方法 : ReadOneByOneTest 老是讀不到數據 :

IO操作(C#)

望高手指點!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女