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;
|
|
/// <summary>
|
/// Writes the file by bytes.
|
/// </summary>
|
/// <returns><c>true</c>, if file by bytes was writed, <c>false</c> otherwise.</returns>
|
/// <param name="fileName">File name.</param>
|
/// <param name="bytes">Bytes.</param>
|
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
|
{
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// Writes the file by input stream.
|
/// </summary>
|
/// <returns><c>true</c>, if file by input stream was writed, <c>false</c> otherwise.</returns>
|
/// <param name="fileName">File name.</param>
|
/// <param name="inputStream">Input stream.</param>
|
/// <param name="isNeedRootPath">If set to <c>true</c> is need root path.</param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 读取图片文件路径
|
/// </summary>
|
/// <returns>The file.</returns>
|
/// <param name="fileName">File name.</param>
|
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 "";
|
}
|
|
/// <summary>
|
/// read file
|
/// </summary>
|
/// <returns>The file.</returns>
|
/// <param name="fileName">File name.</param>
|
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<string> ReadStringList(string fileName, System.Text.Encoding encoding)
|
{
|
System.Collections.Generic.List<string> stringList = new System.Collections.Generic.List<string>();
|
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();
|
}
|
|
}
|
}
|
}
|
}
|