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();
}
}
}
}
}