using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Web;
public abstract class FileSystemObject
{
// Methods
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 (!DirIsExist(newDir))
{
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("没有权限!");
}
}
/// <summary>
/// 创建目录
/// </summary>
/// <param name="dirPath">相对路径</param>
/// <returns>是否成功</returns>
public static bool CreateDirectory(string dirPath)
{
if (string.IsNullOrEmpty(dirPath))
return false;
dirPath = HttpContext.Current.Server.MapPath(dirPath);
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
if (dirInfo.Exists)
return true;
try
{
Directory.CreateDirectory(dirPath);
return true;
}
catch
{
return false;
}
}
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;
row[3] = info2.Extension.Replace(".", "");
row[4] = info2.CreationTime;
row[5] = info2.LastWriteTime;
table.Rows.Add(row);
}
}
return table;
}
public static long[] GetDirInfos(string dir)
{
long[] numArray = new long[3];
DirectoryInfo d = new DirectoryInfo(dir);
return DirInfo(d);
}
private static string[] getDirs(string dir)
{
return Directory.GetDirectories(dir);
}
private static string[] getFiles(string dir)
{
return Directory.GetFiles(dir);
}
public static string GetFileSize(string filePath)
{
FileInfo info = new FileInfo(filePath);
float num = info.Length / 0x400L;
return (num.ToString() + "KB");
}
/// <summary>
/// 返回文件是否存在
/// </summary>
/// <param name="filename">文件名</param>
/// <returns>是否存在</returns>
public static bool FileExists(string filename)
{
return File.Exists(filename);
}
/// <summary>
/// 返回目录是否存在
/// </summary>
/// <param name="filename">文件目录</param>
/// <returns>是否存在</returns>
public static bool DirIsExist(string file)
{
return Directory.Exists(file);
}
public static bool IsExistCategoryDirAndCreate(string categorDir, HttpContext context)
{
if (context != null)
{
string file = Path.Combine(context.Request.PhysicalApplicationPath, categorDir);
if (DirIsExist(file))
{
return true;
}
Create(file, FsoMethod.Folder);
}
return false;
}
public static void Move(string oldFile, string newFile, FsoMethod method)
{
if (method == FsoMethod.File)
{
File.Move(oldFile, newFile);
}
if (method == FsoMethod.Folder)
{
Directory.Move(oldFile, newFile);
}
}
public static string ReadFile(string file)
{
string str = "";
using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read))
{
StreamReader reader = new StreamReader(stream, Encoding.Default);
try
{
return reader.ReadToEnd();
}
catch
{
return str;
}
finally
{
if (reader != null)
{
reader.Dispose();
}
}
}
}
public static void ReplaceFileContent(string dir, string originalContent, string newContent)
{
DirectoryInfo info = new DirectoryInfo(dir);
foreach (FileInfo info2 in info.GetFiles("*.*", SearchOption.AllDirectories))
{
StreamReader reader = info2.OpenText();
string str = reader.ReadToEnd();
reader.Dispose();
if (str.Contains(originalContent))
{
WriteFile(info2.FullName, str.Replace(originalContent, newContent));
}
}
}
public static DataTable SearchFileContent(string dir, string searchPattern)
{
DataTable table = new DataTable();
DirectoryInfo info = new DirectoryInfo(dir);
table.Columns.Add("name");
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));
foreach (FileInfo info2 in info.GetFiles("*.*", SearchOption.AllDirectories))
{
DataRow row = table.NewRow();
StreamReader reader = info2.OpenText();
string str = reader.ReadToEnd();
reader.Dispose();
if (str.Contains(searchPattern))
{
row[0] = info2.FullName.Remove(0, info.FullName.Length);
row[1] = 2;
row[2] = info2.Length;
row[3] = info2.Extension.Replace(".", "");
row[4] = info2.CreationTime;
row[5] = info2.LastWriteTime;
table.Rows.Add(row);
}
}
return table;
}
public static DataTable SearchFiles(string dir, string searchPattern)
{
DataTable table = new DataTable();
DirectoryInfo info = new DirectoryInfo(dir);
table.Columns.Add("name");
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));
foreach (FileInfo info2 in info.GetFiles(searchPattern, SearchOption.AllDirectories))
{
DataRow row = table.NewRow();
row[0] = info2.FullName.Remove(0, info.FullName.Length);
row[1] = 2;
row[2] = info2.Length;
row[3] = info2.Extension.Replace(".", "");
row[4] = info2.CreationTime;
row[5] = info2.LastWriteTime;
table.Rows.Add(row);
}
return table;
}
public static DataTable SearchTemplateFiles(string dir, string searchPattern)
{
DataTable table = new DataTable();
DirectoryInfo info = new DirectoryInfo(dir);
string str = searchPattern;
string str2 = searchPattern.ToLower();
int length = searchPattern.Length;
if (length < 4)
{
str = "*" + str + "*.html";
}
else if ((str2.Substring(length - 4, 4) != ".html") || (str2.Substring(length - 3, 3) != ".htm"))
{
str = "*" + str + "*.html";
}
table.Columns.Add("name");
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));
try
{
foreach (FileInfo info2 in info.GetFiles(str, SearchOption.AllDirectories))
{
DataRow row = table.NewRow();
row[0] = info2.FullName.Remove(0, info.FullName.Length).Replace("/", "\"");
row[1] = 2;
row[2] = info2.Length;
row[3] = info2.Extension.Replace(".", "");
row[4] = info2.CreationTime;
row[5] = info2.LastWriteTime;
table.Rows.Add(row);
}
}
catch (ArgumentException)
{
}
return table;
}
public static string WriteAppend(string file, string fileContent)
{
string str;
FileInfo info = new FileInfo(file);
if (!Directory.Exists(info.DirectoryName))
{
Directory.CreateDirectory(info.DirectoryName);
}
FileStream stream = new FileStream(file, FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(stream, Encoding.GetEncoding("utf-8"));
try
{
writer.Write(fileContent);
str = fileContent;
}
catch (Exception exception)
{
throw new FileNotFoundException(exception.ToString());
}
finally
{
writer.Flush();
stream.Flush();
writer.Close();
stream.Close();
}
return str;
}
public static string WriteFile(string file, string fileContent)
{
string str;
FileInfo info = new FileInfo(file);
if (!Directory.Exists(info.DirectoryName))
{
Directory.CreateDirectory(info.DirectoryName);
}
FileStream stream = new FileStream(file, FileMode.Create, FileAccess.Write);
StreamWriter writer = new StreamWriter(stream, Encoding.UTF8);
try
{
writer.Write(fileContent);
str = fileContent;
}
catch (Exception exception)
{
throw new FileNotFoundException(exception.ToString());
}
finally
{
writer.Flush();
stream.Flush();
writer.Close();
stream.Close();
}
return str;
}
public static void WriteFile(string file, string fileContent, bool append)
{
FileInfo info = new FileInfo(file);
if (!Directory.Exists(info.DirectoryName))
{
Directory.CreateDirectory(info.DirectoryName);
}
StreamWriter writer = new StreamWriter(file, append, Encoding.GetEncoding("utf-8"));
try
{
writer.Write(fileContent);
}
catch (Exception exception)
{
throw new FileNotFoundException(exception.ToString());
}
finally
{
writer.Flush();
writer.Close();
}
}
}
public enum FsoMethod
{
Folder,
File,
All
}
分享到:
相关推荐
C#文件和目录操作类 主要包含文件操作类和目录操作类两个类方法
一个php文件目录操作类。测试建立文件夹,测试复制文件夹,测试移动文件夹,测试删除文件夹。
php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类
FileSystemObject在网页中操作本地文件
java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...
在程序中引用类,类中方法已实现文件的新建、修改、删除、复制、移动等多个功能,直接调用即可实现相应的功能。
请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数 该类要提供数据缓存服务。 调用该类的写操作接口时,数据要首先写到缓存,然后再根据策略写到文件中。 调用该类的...
一、实验目的设计 1.理解和掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.熟练使用man命令。 二、实验仪器设备环境 装有Linux操作系统的计算机。...(6)用mkdir建立一个目录subdir.
一个php文件目录操作类。测试建立文件夹,测试复制文件夹,测试移动文件夹,测试删除文件夹。
python文件和目录操作方法大全python文件和目录操作方法大全python文件和目录操作方法大全python文件和目录操作方法大全python文件和目录操作方法大全python文件和目录操作方法大全python文件和目录操作方法大全...
VC下利用ADO操作数据库类和文件目录操作类
File Directory 操作,c# ,net2.0 很好用的, 希望大家喜欢
文件及文件夹复制,移动,删除,创建,取得文件夹所有文件信息等
asp文件操作类,很全
php文件操作类
请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数 该类要提供数据缓存服务。 调用该类的写操作接口时,数据要首先写到缓存,然后再根据策略写到文件中。 调用该类的...
VC下面,一个封装好的ini文件操作类,很好用
QDir:用于提取目录或文件信息,获取一个目录下的文件或目录列表,创建或删除目录和文件,文件重命名等操作。 QTemporaryDir和QTemporaryFiIe:用于创建临时目录和临时文件。 QFileSystemWatcher:文件和目录监听...
文件目录常用操作的类
FSO对象模型提供了三种创建和打开文件的方法:其实本示例是创建了FileSystemObject对象,然后用FSO对象的FileExists、CreateTextFile、OpenTextFile方法,对文件进行操作,演示了三种FSO对象的操作方法,对学习初级...