using System;
using System.IO;
using System.Collections.Generic;
using Shared;
namespace HDL_ON
{
public static class FileUtils
{
public static string RootPath = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/";
///
/// 是否存在文件夹
///
///
public static bool IsExisFolder(string folderName)
{
bool result = false;
var path = Path.Combine(RootPath, folderName);
result = Directory.Exists(path);
return result;
}
///
/// 创建一个住宅的备份文件夹
///
public static string CreateRegionBackup(string regionId)
{
var path = Path.Combine(RootPath, regionId);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return path + "/";
}
///
/// 判断是否已经存在住宅的本地文件夹
///
public static bool ExistRegion(string regionId)
{
var path = Path.Combine(RootPath, regionId);
return Directory.Exists(path);
}
///
/// 删除指定区域里面的所有文件
///
/// Path.
public static void DeleteRegionFiles(string path)
{
foreach (var fileName in ReadRegionFiles(path))
{
File.Delete(Path.Combine(path, fileName));
MainPage.Log("删除文件名为:" + fileName);
}
}
///
/// 读取区域文件夹里面的文件
///
static List ReadRegionFiles(string regionRootPath)
{
List listFiles = new List();
DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
listFiles.Add(NextFile.Name);
}
return listFiles;
}
///
/// 恢复区域文件夹里面的文件
///
public static void RestoreRegionFiles(string regionRootPath)
{
DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
int index = 0;
var thFolders = TheFolder.GetFiles();
int folderCount = thFolders.Length;
foreach (FileInfo NextFile in thFolders)
{
index++;
if (NextFile.Name.Contains(ImageUtlis.HEADIMAGE))
{
continue;
}
if (NextFile.Name == "null" || NextFile.Name == "UserConfig" || NextFile.Name == "UserInfo_File" || NextFile.Name == "AccountListDB" || NextFile.Name == OnAppConfig.ConfigFile)
{
continue;
}
FileInfo fileInfo = new FileInfo(regionRootPath + NextFile.Name);
if (fileInfo.Exists)
{
fileInfo.MoveTo(Application.RootPath + NextFile.Name);
MainPage.Log("Restroe : " + NextFile.Name);
}
}
}
///
/// 遍历文件
///
public static List ReadFiles()
{
List listFiles = new List();
DirectoryInfo TheFolder = new DirectoryInfo(RootPath);
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
listFiles.Add(NextFile.Name);
}
return listFiles;
}
///
/// 更改文件名
///
/// Old file path.
/// New file path.
public static void ReNameFile(string oldFilePath, string newFilePath)
{
if (oldFilePath == newFilePath)
{
return;
}
DeleteFile(newFilePath);
FileInfo fileInfo = new FileInfo(Application.RootPath + oldFilePath);
if (fileInfo.Exists)
{
fileInfo.MoveTo(Application.RootPath + newFilePath);
}
}
public static void ReNameFoler(string srcFolderPath, string destFolderPath)
{
if (srcFolderPath == destFolderPath)
{
return;
}
var srcPath = Path.Combine(RootPath, srcFolderPath);
#if DEBUG
DirectoryInfo root = new DirectoryInfo (RootPath);
foreach (DirectoryInfo d in root.GetDirectories ()) {
MainPage.Log ("文件夹:" + d.Name);
}
#endif
if (Directory.Exists(srcPath))
{
DirectoryInfo folder = new DirectoryInfo(srcPath);
var path = Path.Combine(RootPath, destFolderPath);
if (Directory.Exists(path))
{
FileAttributes attr0 = File.GetAttributes(path);
if (attr0 == FileAttributes.Directory)
{
Directory.Delete(path, true);
}
else
{
File.Delete(path);
}
}
folder.MoveTo(path);
#if DEBUG
List listFiles = new List ();
DirectoryInfo TheFolder = new DirectoryInfo (path);
foreach (FileInfo NextFile in TheFolder.GetFiles ()) {
MainPage.Log (NextFile.Name);
}
#endif
}
#if DEBUG
foreach (DirectoryInfo d in root.GetDirectories ()) {
MainPage.Log ("文件夹:" + d.Name);
}
#endif
}
///
/// 文件是否存在
///
/// File path.
public static bool Exists(string filePath)
{
//System.MainPage.WriteLog ("Exists==" + Path.Combine (RootPath, filePath));
return File.Exists(Path.Combine(RootPath, filePath));
}
///
/// Deletes the file.
///
/// File name.
public static void DeleteFile(string fileName)
{
if (fileName == null || fileName == "Language.ini" || fileName == "AccountListDB" || fileName == OnAppConfig.ConfigFile)
{
return;
}
File.Delete(Path.Combine(RootPath, fileName));
MainPage.Log("删除文件名为:" + fileName);
}
///
/// Deletes all file.
///
public static void DeleteAllFile()
{
List filesList = ReadFiles();
for (int j = 0; j < filesList.Count; j++)
{
var f = filesList[j];
if (f == "linphonerc" || f == "AccountListDB" || f == "UserInfo_File" || f == OnAppConfig.ConfigFile)
continue;
DeleteFile(f);
}
}
///
/// 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;
}
FileStream fs = null;
try
{
fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
fs.Write(bytes, 0, bytes.Length);
fs.Flush();
MainPage.Log("SaveFile:" + fileName);
return true;
}
catch (Exception ex)
{
MainPage.Log("FileUtiles Code 113:" + ex.ToString());
return false;
}
finally
{
try
{
if (fs != null)
{
fs.Close();
}
}
catch (Exception ex)
{
MainPage.Log("FileUtils Code 121 :" + ex.ToString());
}
}
}
///
/// 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, Stream inputStream)
{
if (fileName == null || (fileName = fileName.Trim()) == (""))
{
return false;
}
FileStream fs = null;
try
{
byte[] buffer = new byte[4 * 1024];
int length = 0;
while ((length = inputStream.Read(buffer, 0, buffer.Length)) != 0)
{
if (fs == null)
{
fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
}
fs.Write(buffer, 0, length);
fs.Flush();
}
return true;
}
catch
{
return false;
}
finally
{
try
{
if (fs != null)
{
fs.Close();
}
}
catch
{
}
}
}
///
/// read file
///
/// The file.
/// File name.
public static byte[] ReadImage(string fileName)
{
if (Shared.Application.IsPad)
{
fileName = "Pad/" + fileName;
}
else
{
fileName = "Phone/" + fileName;
}
FileStream fs = null;
try
{
if (File.Exists(Path.Combine(RootPath, fileName)))
{
fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Open, FileAccess.Read);
}
else if (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 byte[] ReadFile(string fileName)
{
FileStream fs = null;
try
{
if (File.Exists(Path.Combine(RootPath, fileName)))
{
fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Open, FileAccess.Read);
}
else if (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 void FileCopyToRootPath(string oldPath, string fileName)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(oldPath);
if (fileInfo.Exists)
{
fileInfo.CopyTo(Path.Combine(RootPath, fileName), true);
//Utlis.WriteLine("FileCopyToRootPath : " + Path.Combine(RootPath, fileName));
}
}
}
//[System.Serializable]
//class Song
//{
// //string [] ss = new string [] { };
// public List album = new List();
// public List artist = new List();
// public string sss;
//}
//[System.Serializable]
//class Album
//{
// public string albumname;
// public string artistname;
// public string artistpic;
//}
//[System.Serializable]
//class Artist
//{
// public string artistname;
// public string artistpic;
//}
}