using System;
using System.Web;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
using System.IO.Compression;
namespace Pub.Class
{
/// <summary>
/// 文件目录操作类
/// </summary>
public class FileFolder
{
#region CreateFolder/CreateDir
/// <summary>
/// 目录不存在时新建
/// </summary>
/// <param name="filePath">目录(相对路径)</param>
public static void CreateFolder(string filePath)
{
string[] PathArr = filePath.Split(new string[] { "/" }, StringSplitOptions.None);
string _path = PathArr[0];
for (int i = 1; i < PathArr.Length; i++) {
_path = _path + "/" + PathArr[i];
string _filePath = HttpContext.Current.Server.MapPath(_path);
if (!System.IO.Directory.Exists(_filePath)) {
System.IO.Directory.CreateDirectory(_filePath);
}
}
}
/// <summary>
/// 创建目录
/// </summary>
/// <param name="name">名称</param>
/// <returns>创建是否成功</returns>
[DllImport("dbgHelp", SetLastError=true)]
private static extern bool MakeSureDirectoryPathExists(string name);
/// <summary>
/// 建立文件夹
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static bool CreateDir(string name)
{
return MakeSureDirectoryPathExists(name);
}
/// <summary>
/// 目录是否存在
/// </summary>
/// <param name="folderPath"></param>
/// <returns></returns>
public static bool FolderExists(string folderPath) {
return System.IO.Directory.Exists(folderPath);
}
#endregion
#region FileExists/DelAllFile/DelFile/GetAllFile/BackupFile
/// <summary>
/// 返回文件是否存在
/// </summary>
/// <param name="filename">文件名</param>
/// <returns>是否存在</returns>
public static bool FileExists(string filename)
{
return System.IO.File.Exists(filename);
}
/// <summary>
/// 删除指定目录下的所有文件
/// </summary>
/// <param name="path"></param>
public static void DelAllFile(string path) {
DirectoryInfo Folder = new DirectoryInfo(path);
FileInfo[] subFiles = Folder.GetFiles();
for (int j = 0; j < subFiles.Length; j++) {
subFiles[j].Delete();
}
}
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="filePath"></param>
public static void DelFile(string filePath) {
if (FileExists(filePath)) System.IO.File.Delete(filePath);
}
/// <summary>
/// 取指定目录下的所有文件名
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static StringBuilder GetAllFile(string path) {
StringBuilder fileList = new StringBuilder();
try {
DirectoryInfo Folder = new DirectoryInfo(path);
FileInfo[] subFiles = Folder.GetFiles();
for (int j = 0; j < subFiles.Length; j++) {
fileList.Append(subFiles[j].Name + "|");
}
} catch { }
return fileList.Length.Equals(0) ? fileList : fileList.Remove(fileList.Length - 1, 1);
}
/// <summary>
/// 取目录下的所有文件
/// </summary>
/// <param name="path"></param>
/// <param name="fileList"></param>
/// <param name="delStr"></param>
public static void GetAllFile(string path,ref StringBuilder fileList, string delStr) {
if (delStr.Equals("")) delStr = path;
delStr = delStr.Substring(delStr.Length - 1).Equals("\\") ? delStr : delStr + "\\";
string[] files = System.IO.Directory.GetFiles(path);
foreach (string s in files) fileList.Append(s + "|").Replace(delStr,"");
string[] dir = System.IO.Directory.GetDirectories(path);
foreach (string s in dir) GetAllFile(s, ref fileList,delStr);
}
/// <summary>
/// 备份文件
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
/// <param name="overwrite"></param>
/// <returns></returns>
public static bool BackupFile(string sourceFileName, string destFileName, bool overwrite) {
if (!File.Exists(sourceFileName)) return false;
if (!overwrite && File.Exists(destFileName)) return false;
try {
File.Copy(sourceFileName, destFileName, true);
} catch {
return false;
}
return true;
}
#endregion
/// <summary>
/// 取文件编码
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static Encoding GetFileEncoding(string fileName) {
/*byte[] Unicode=new byte[]{0xFF,0xFE};
byte[] UnicodeBIG=new byte[]{0xFE,0xFF};
byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/
try {
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs,System.Text.Encoding.Default);
byte[] ss = r.ReadBytes(3);
r.Close();
fs.Close();
fs.Dispose();
if(ss[0]>=0xEF) {
if (ss[0]==0xEF && ss[1]==0xBB && ss[2]==0xBF)
return System.Text.Encoding.UTF8;
else if (ss[0]==0xFE && ss[1]==0xFF)
return System.Text.Encoding.BigEndianUnicode;
else if (ss[0]==0xFF && ss[1]==0xFE)
return System.Text.Encoding.Unicode;
else
return System.Text.Encoding.Default;
} else return System.Text.Encoding.Default;
} catch {
return System.Text.Encoding.Default;
}
}
public static void GZipCompress(string inFilename, string outFilename) {
FileStream sourceFile = File.OpenRead(inFilename);
FileStream destFile = File.Create(outFilename);
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
int theByte = sourceFile.ReadByte();
while (theByte != -1) {
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
sourceFile.Close();
compStream.Close();
destFile.Close();
}
public static void GZipDecompress(string inFileName, string outFileName) {
FileStream sourceFile = File.OpenRead(inFileName);
FileStream destFile = File.Create(outFileName);
GZipStream compStream = new GZipStream(sourceFile, CompressionMode.Decompress);
int theByte = compStream.ReadByte();
while (theByte != -1) {
destFile.WriteByte((byte)theByte);
theByte = compStream.ReadByte();
}
destFile.Close();
compStream.Close();
sourceFile.Close();
}
public static long GetDirectorySize(string path) {
long size = 0;
string[] files = System.IO.Directory.GetFiles(path);
foreach (string s in files) size += new FileInfo(s).Length;
string[] dir = System.IO.Directory.GetDirectories(path);
foreach (string s in dir) size += GetDirectorySize(s);
return size;
}
public static long GetFileSize(string path) {
if (!FileExists(path)) return 0;
return new FileInfo(path).Length;
}
}
}
采集
分享到:
相关推荐
一个php文件目录操作类。测试建立文件夹,测试复制文件夹,测试移动文件夹,测试删除文件夹。
php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类php 文件目录操作类
一个php文件目录操作类。测试建立文件夹,测试复制文件夹,测试移动文件夹,测试删除文件夹。
VC下利用ADO操作数据库类和文件目录操作类
File Directory 操作,c# ,net2.0 很好用的, 希望大家喜欢
C#文件和目录操作类 主要包含文件操作类和目录操作类两个类方法
java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...
在程序中引用类,类中方法已实现文件的新建、修改、删除、复制、移动等多个功能,直接调用即可实现相应的功能。
asp文件操作类,很全
文件及文件夹复制,移动,删除,创建,取得文件夹所有文件信息等
php文件操作类
文件目录常用操作的类
c#+库文件XML操作类时间操作类视频转换类文件操作类FTP操作类弹出信息类等库文件
实用的php文件操作类
# java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...
编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...
封装了包括所有常用的文件操作方法如:读文件,写文件,查看文件夹大小,树状展示文件夹中文件目录,拷贝文件,复制文件,删除文件,创建文件,递归删除文件夹中文件,获取指定文件属性
文件操作工具类,包含生成保存,复制,删除,读取,获取文件名,获取文件列表等等,只有你想不到,没有你找不到的Android端工具类,复制到项目中可直接使用
牛人将Linux中的dirent.h翻译成window中可以用的dirent.h
PHP 写的一个简单文件操作类,支持 PHP4 PHP5