using System; using System.IO; namespace Shared.IO { public static class FileUtils { public static void DeleteFile(string path) { System.IO.File.Delete(path); } public static System.IO.Stream GetStreamFromResource(string path) { return Application.Activity.Assets.Open(path); } public static readonly string RootPath = Application.RootPath; /// /// Writes the file by bytes. /// /// true, if file by bytes was writed, false otherwise. /// File name. /// Bytes. public static bool WriteFileByBytes(string fileName, byte[] bytes) { if (fileName == null || (fileName = fileName.Trim()) == ("")) { return false; } System.IO.FileStream fs = null; try { fs = new FileStream(System.IO.Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write); fs.Write(bytes, 0, bytes.Length); fs.Flush(); return true; } catch { return false; } finally { try { if (fs != null) { fs.Close(); } } catch { } } } /// /// Writes the file by input stream. /// /// true, if file by input stream was writed, false otherwise. /// File name. /// Input stream. /// If set to true is need root path. public static bool WriteFileByInputStream(string fileName, System.IO.Stream inputStream) { if (fileName == null || (fileName = fileName.Trim()) == ("")) { return false; } try { var fs = new FileStream(System.IO.Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write); byte[] buffer = new byte[4 * 1024]; int length = 0; while ((length = inputStream.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, length); fs.Flush(); } fs.Close(); Shared.HDLUtils.WriteLine(fileName); return true; } catch { return false; } } /// /// 读取图片文件路径 /// /// The file. /// File name. public static string GetImageFilePath(string fileName) { if (fileName == null) { return ""; } if (System.IO.File.Exists( fileName)) { return fileName; } // 先找是否是用户已经更改过的图片,这个是优先选择 if (System.IO.File.Exists(System.IO.Path.Combine(Application.RootPath, fileName))) { return System.IO.Path.Combine(Application.RootPath, fileName); } string newFileName = null; if (Application.Skin == null) { newFileName = "Phone/" + fileName; } else { newFileName = Application.Skin + "/" + fileName; } //data 目录下查找 ,有可能是多皮肤的数据 if (System.IO.File.Exists(System.IO.Path.Combine(Application.RootPath, newFileName))) { return System.IO.Path.Combine(Application.RootPath, newFileName); } return ""; } /// /// read file /// /// The file. /// File name. public static byte[] ReadImage11111(string fileName) { string tempFileName = fileName; { fileName = "Phone/" + fileName; } System.IO.FileStream fs = null; try { if (System.IO.File.Exists(System.IO.Path.Combine(RootPath, tempFileName))) { fs = new FileStream(System.IO.Path.Combine(RootPath, tempFileName), FileMode.Open, FileAccess.Read); } else if (System.IO.File.Exists(fileName)) { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); } else { return new byte[0]; } byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); return bytes; } catch { return new byte[0]; } finally { try { if (fs != null) { fs.Close(); } } catch { } } } public static System.Collections.Generic.List ReadStringList(string fileName, System.Text.Encoding encoding) { System.Collections.Generic.List stringList = new System.Collections.Generic.List(); System.IO.StreamReader fs = null; try { if (System.IO.File.Exists(System.IO.Path.Combine(RootPath, fileName))) { fs = new StreamReader(System.IO.Path.Combine(RootPath, fileName), encoding); } else if (System.IO.File.Exists(fileName)) { fs = new StreamReader(fileName, encoding); } else { return stringList; } string s; while (null != (s = fs.ReadLine())) { stringList.Add(s); } return stringList; } catch { return stringList; } finally { if (fs != null) { fs.Close(); } } } public static byte[] ReadFile(string fileName) { System.IO.FileStream fs = null; try { if (System.IO.File.Exists(System.IO.Path.Combine(RootPath, fileName))) { fs = new FileStream(System.IO.Path.Combine(RootPath, fileName), FileMode.Open, FileAccess.Read); } else if (System.IO.File.Exists(fileName)) { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); } else { return new byte[0]; } byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); return bytes; } catch { return new byte[0]; } finally { if (fs != null) { fs.Close(); } } } } }