热门IT资讯网

IO操作(C#)

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,在一些游戏当中 , 通常将一些参数写在配置里面 , 无论是XML , EXCEL , TXT , BIN …… 我相信都会用到其中的一种 。首先 , XML , BIN 对于策划人员来说就很容易配置错

在一些游戏当中 , 通常将一些参数写在配置里面 , 无论是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;             }        }        ///         ///         ///         ///         ///         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;                }            }        }        ///         /// 获得电脑所有的驱动盘        ///         ///         public string[] GetMyLogicalDrives()        {            return Directory.GetLogicalDrives();        }        ///         /// 移动数据        ///         ///  原始的路径          ///  新的路径         ///  操作是否成功         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;            }        }        ///         /// 复制一个文件        ///         ///         ///         ///         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;            }        }        ///         /// 删除一个文件        ///         ///         ///         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;            }        }        ///         /// 创建一个文件夹        ///         ///         ///         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;                }            }        }        ///         /// 删除文件夹        ///         ///         ///         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;            }        }        ///         ///         ///         ///         ///         ///         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;            }        }        ///         /// 读取文件( 一个个读 )老是在流以外 , 无法读到正确的值        ///         ///         ///         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;            }        }        ///         /// 读取文本        ///         ///         ///         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;            }        }        ///         ///         ///         ///         ///         ///         ///         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 老是读不到数据 :

望高手指点!


0