📄 filesystemobject.cs
字号:
namespace PowerEasy.Common
{
using System;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
public abstract class FileSystemObject
{
protected FileSystemObject()
{
}
public static string ConvertSizeToShow(int fileSize)
{
int num = fileSize / 0x400;
if (num < 1)
{
return (fileSize.ToString() + "<span style='color:red'> B</span>");
}
if (num < 0x400)
{
return (num.ToString() + "<span style='color:red'> KB</span>");
}
int num2 = num / 0x400;
if (num2 < 1)
{
return (num.ToString() + "<span style='color:red'> KB</span>");
}
if (num2 >= 0x400)
{
num2 /= 0x400;
return (num2.ToString() + "<span style='color:red'> GB</span>");
}
return (num2.ToString() + "<span style='color:red'> MB</span>");
}
public static void CopyDirectory(string oldDir, string newDir)
{
DirectoryInfo od = new DirectoryInfo(oldDir);
CopyDirInfo(od, oldDir, newDir);
}
private static void CopyDirInfo(DirectoryInfo od, string oldDir, string newDir)
{
if (!IsExist(newDir, FsoMethod.Folder))
{
Create(newDir, FsoMethod.Folder);
}
foreach (DirectoryInfo info in od.GetDirectories())
{
CopyDirInfo(info, info.FullName, newDir + info.FullName.Replace(oldDir, ""));
}
foreach (FileInfo info2 in od.GetFiles())
{
CopyFile(info2.FullName, newDir + info2.FullName.Replace(oldDir, ""));
}
}
public static DataTable CopyDT(DataTable parent, DataTable child)
{
for (int i = 0; i < child.Rows.Count; i++)
{
DataRow row = parent.NewRow();
for (int j = 0; j < parent.Columns.Count; j++)
{
row[j] = child.Rows[i][j];
}
parent.Rows.Add(row);
}
return parent;
}
public static void CopyFile(string oldFile, string newFile)
{
File.Copy(oldFile, newFile, true);
}
public static bool CopyFileStream(string oldPath, string newPath)
{
try
{
FileStream input = new FileStream(oldPath, FileMode.Open, FileAccess.Read);
FileStream output = new FileStream(newPath, FileMode.Create, FileAccess.Write);
BinaryReader reader = new BinaryReader(input);
BinaryWriter writer = new BinaryWriter(output);
reader.BaseStream.Seek(0L, SeekOrigin.Begin);
reader.BaseStream.Seek(0L, SeekOrigin.End);
while (reader.BaseStream.Position < reader.BaseStream.Length)
{
writer.Write(reader.ReadByte());
}
reader.Close();
writer.Close();
input.Flush();
input.Close();
output.Flush();
output.Close();
return true;
}
catch
{
return false;
}
}
public static void Create(string file, FsoMethod method)
{
try
{
if (method == FsoMethod.File)
{
WriteFile(file, "");
}
else if (method == FsoMethod.Folder)
{
Directory.CreateDirectory(file);
}
}
catch
{
throw new UnauthorizedAccessException("没有权限!");
}
}
public static string CreateFileFolder(string folderName)
{
HttpContext current = HttpContext.Current;
if (current == null)
{
throw new HttpException("当前请求为空!");
}
return CreateFileFolder(folderName, current);
}
public static string CreateFileFolder(string folderName, HttpContext context)
{
if (string.IsNullOrEmpty(folderName))
{
throw new ArgumentNullException("folderName", "folderName为空!");
}
string path = Path.Combine(context.Request.PhysicalApplicationPath, folderName);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return path;
}
public static void Delete(string file, FsoMethod method)
{
if ((method == FsoMethod.File) && File.Exists(file))
{
File.Delete(file);
}
if ((method == FsoMethod.Folder) && Directory.Exists(file))
{
Directory.Delete(file, true);
}
}
private static long[] DirInfo(DirectoryInfo d)
{
long[] numArray = new long[3];
long num = 0L;
long num2 = 0L;
long num3 = 0L;
FileInfo[] files = d.GetFiles();
num3 += files.Length;
foreach (FileInfo info in files)
{
num += info.Length;
}
DirectoryInfo[] directories = d.GetDirectories();
num2 += directories.Length;
foreach (DirectoryInfo info2 in directories)
{
num += DirInfo(info2)[0];
num2 += DirInfo(info2)[1];
num3 += DirInfo(info2)[2];
}
numArray[0] = num;
numArray[1] = num2;
numArray[2] = num3;
return numArray;
}
private static DataTable GetDirectoryAllInfo(DirectoryInfo d, FsoMethod method)
{
DataRow row;
DataTable parent = new DataTable();
parent.Columns.Add("name");
parent.Columns.Add("rname");
parent.Columns.Add("content_type");
parent.Columns.Add("type");
parent.Columns.Add("path");
parent.Columns.Add("creatime", typeof(DateTime));
parent.Columns.Add("size", typeof(int));
foreach (DirectoryInfo info in d.GetDirectories())
{
if (method == FsoMethod.File)
{
parent = CopyDT(parent, GetDirectoryAllInfo(info, method));
}
else
{
row = parent.NewRow();
row[0] = info.Name;
row[1] = info.FullName;
row[2] = "";
row[3] = 1;
row[4] = info.FullName.Replace(info.Name, "");
row[5] = info.CreationTime;
row[6] = "";
parent.Rows.Add(row);
parent = CopyDT(parent, GetDirectoryAllInfo(info, method));
}
}
if (method != FsoMethod.Folder)
{
foreach (FileInfo info2 in d.GetFiles())
{
row = parent.NewRow();
row[0] = info2.Name;
row[1] = info2.FullName;
row[2] = info2.Extension.Replace(".", "");
row[3] = 2;
row[4] = info2.DirectoryName + @"\";
row[5] = info2.CreationTime;
row[6] = info2.Length;
parent.Rows.Add(row);
}
}
return parent;
}
public static DataTable GetDirectoryAllInfos(string dir, FsoMethod method)
{
DataTable directoryAllInfo;
try
{
DirectoryInfo d = new DirectoryInfo(dir);
directoryAllInfo = GetDirectoryAllInfo(d, method);
}
catch (Exception exception)
{
throw new FileNotFoundException(exception.ToString());
}
return directoryAllInfo;
}
public static DataTable GetDirectoryInfos(string dir, FsoMethod method)
{
DataRow row;
DataTable table = new DataTable();
table.Columns.Add("name", typeof(string));
table.Columns.Add("type");
table.Columns.Add("size", typeof(int));
table.Columns.Add("content_type");
table.Columns.Add("createTime", typeof(DateTime));
table.Columns.Add("lastWriteTime", typeof(DateTime));
if (method != FsoMethod.File)
{
for (int i = 0; i < getDirs(dir).Length; i++)
{
row = table.NewRow();
DirectoryInfo d = new DirectoryInfo(getDirs(dir)[i]);
long[] numArray = DirInfo(d);
row[0] = d.Name;
row[1] = 1;
row[2] = numArray[0];
row[3] = "";
row[4] = d.CreationTime;
row[5] = d.LastWriteTime;
table.Rows.Add(row);
}
}
if (method != FsoMethod.Folder)
{
for (int j = 0; j < getFiles(dir).Length; j++)
{
row = table.NewRow();
FileInfo info2 = new FileInfo(getFiles(dir)[j]);
row[0] = info2.Name;
row[1] = 2;
row[2] = info2.Length;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -