您好,登錄后才能下訂單哦!
在一些游戲當(dāng)中 , 通常將一些參數(shù)寫在配置里面 , 無(wú)論是XML , EXCEL , TXT , BIN …… 我相信都會(huì)用到其中的一種 。首先 , XML , BIN 對(duì)于策劃人員來(lái)說(shuō)就很容易配置錯(cuò)誤了。如果能用程序?qū)xcel里面的數(shù)據(jù)轉(zhuǎn)化為Txt , Bin , Xml數(shù)據(jù), 就很爽了 , 關(guān)于Excel數(shù)據(jù)的讀寫我在前幾篇博文中寫過(guò)。 這里就涉及到了I/O的操作 。廢話不多說(shuō) , 上代碼 . 這里寫的都是同步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("創(chuàng)建文件{0},失敗 , 原因 : {1} ", targetPath, e.ToString()); return false; } } } /// <summary> /// 獲得電腦所有的驅(qū)動(dòng)盤 /// </summary> /// <returns></returns> public string[] GetMyLogicalDrives() { return Directory.GetLogicalDrives(); } /// <summary> /// 移動(dòng)數(shù)據(jù) /// </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("移動(dòng)文件{0},失敗 , 原因 : {1} " , oldPath , e.ToString() ); return false; } } else { Console.WriteLine("Error , {0}文件不存在?。?! " , oldPath ); return false; } } /// <summary> /// 復(fù)制一個(gè)文件 /// </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("復(fù)制文件{0},失敗 , 原因 : {1} ", oldPath, e.ToString()); return false; } } else { Console.WriteLine("Error , {0}文件不存在?。?! ", oldPath); return false; } } /// <summary> /// 刪除一個(gè)文件 /// </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> /// 創(chuàng)建一個(gè)文件夾 /// </summary> /// <param name="path"></param> /// <returns></returns> public bool CreateFolder(string path) { if (Directory.Exists(path)) { Console.WriteLine("文件夾{0}已經(jīng)存在", path); return true; } else { try { DirectoryInfo dirInfo = Directory.CreateDirectory(path); Console.WriteLine("創(chuàng)建文件夾成功 , 創(chuàng)建時(shí)間為{0}", Directory.GetCreationTime(path)); return true; } catch (Exception e) { Console.WriteLine("創(chuàng)建文件夾失敗 , 失敗原因{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("移動(dòng)文件夾{0},失敗 , 原因 : {1} ", oldPath, e.ToString()); return false; } } else { Console.WriteLine("Error , {0}文件夾不存在?。?! ", oldPath); return false; } } /// <summary> /// 讀取文件( 一個(gè)個(gè)讀 )老是在流以外 , 無(wú)法讀到正確的值 /// </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); //將指針設(shè)到開頭 while (br.BaseStream.Position < br.BaseStream.Length) { try { Console.WriteLine(br.ReadString()); } catch (EndOfStreamException e) { Console.WriteLine("已經(jīng)到了結(jié)尾 {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"))) // 解決中文亂碼問(wèn)題 { 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"))) // 解決中文亂碼問(wèn)題 { if (isNendWarp) { sw.WriteLine(content); } else { sw.Write(content); } sw.Close(); } return true; } else { return false; } } } }
StreamWriter( targetPath , true ,UnicodeEncoding.GetEncoding("GB2312"))
第二個(gè)參數(shù)為false : 表示覆蓋寫入
這里我都測(cè)過(guò)了 , OK的 , 有一個(gè)方法 : ReadOneByOneTest 老是讀不到數(shù)據(jù) :
望高手指點(diǎn)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。