[原]FileHelper-文件操作辅助类
using System;
using System.Collections.Generic;
using System.IO;
using System.Text; namespace Whir.Software.Framework
{
/// <summary>
/// 文件辅助类
/// </summary>
public class FileHelper
{
/// <summary>
/// 编码方式
/// </summary>
private static readonly Encoding Encoding = Encoding.UTF8; /// <summary>
/// 递归取得文件夹下文件
/// </summary>
/// <param name="dir"></param>
/// <param name="list"></param>
public static void GetFiles(string dir, List<string> list)
{
GetFiles(dir, list, new List<string>());
} /// <summary>
/// 递归取得文件夹下文件
/// </summary>
/// <param name="dir"></param>
/// <param name="list"></param>
/// <param name="fileExtsions"></param>
public static void GetFiles(string dir, List<string> list, List<string> fileExtsions)
{
//添加文件
string[] files = Directory.GetFiles(dir);
if (fileExtsions.Count > 0)
{
foreach (string file in files)
{
string extension = Path.GetExtension(file);
if (extension != null && fileExtsions.Contains(extension))
{
list.Add(file);
}
}
}
else
{
list.AddRange(files);
}
//如果是目录,则递归
DirectoryInfo[] directories = new DirectoryInfo(dir).GetDirectories();
foreach (DirectoryInfo item in directories)
{
GetFiles(item.FullName, list, fileExtsions);
}
} /// <summary>
/// 写入文件
/// </summary>
/// <param name="filePath">文件名</param>
/// <param name="content">文件内容</param>
public static void WriteFile(string filePath, string content)
{
try
{
var fs = new FileStream(filePath, FileMode.Create);
Encoding encode = Encoding;
//获得字节数组
byte[] data = encode.GetBytes(content);
//开始写入
fs.Write(data, 0, data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
} /// <summary>
/// 读取文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string ReadFile(string filePath)
{
return ReadFile(filePath, Encoding);
} /// <summary>
/// 读取文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string ReadFile(string filePath, Encoding encoding)
{
using (var sr = new StreamReader(filePath, encoding))
{
return sr.ReadToEnd();
}
} /// <summary>
/// 读取文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static List<string> ReadFileLines(string filePath)
{
var str = new List<string>();
using (var sr = new StreamReader(filePath, Encoding))
{
String input;
while ((input = sr.ReadLine()) != null)
{
str.Add(input);
}
}
return str;
} /// <summary>
/// 复制文件夹(及文件夹下所有子文件夹和文件)
/// </summary>
/// <param name="sourcePath">待复制的文件夹路径</param>
/// <param name="destinationPath">目标路径</param>
public static void CopyDirectory(String sourcePath, String destinationPath)
{
var info = new DirectoryInfo(sourcePath);
Directory.CreateDirectory(destinationPath);
foreach (FileSystemInfo fsi in info.GetFileSystemInfos())
{
String destName = Path.Combine(destinationPath, fsi.Name); if (fsi is FileInfo) //如果是文件,复制文件
File.Copy(fsi.FullName, destName);
else //如果是文件夹,新建文件夹,递归
{
Directory.CreateDirectory(destName);
CopyDirectory(fsi.FullName, destName);
}
}
} /// <summary>
/// 删除文件夹(及文件夹下所有子文件夹和文件)
/// </summary>
/// <param name="directoryPath"></param>
public static void DeleteFolder(string directoryPath)
{
foreach (string d in Directory.GetFileSystemEntries(directoryPath))
{
if (File.Exists(d))
{
var fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly", StringComparison.Ordinal) != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d); //删除文件
}
else
DeleteFolder(d); //删除文件夹
}
Directory.Delete(directoryPath); //删除空文件夹
} /// <summary>
/// 清空文件夹(及文件夹下所有子文件夹和文件)
/// </summary>
/// <param name="directoryPath"></param>
public static void ClearFolder(string directoryPath)
{
foreach (string d in Directory.GetFileSystemEntries(directoryPath))
{
if (File.Exists(d))
{
var fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly", StringComparison.Ordinal) != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d); //删除文件
}
else
DeleteFolder(d); //删除文件夹
}
} /// <summary>
/// 取得文件大小,按适当单位转换
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public static string GetFileSize(string filepath)
{
string result = "0KB";
if (File.Exists(filepath))
{
var size = new FileInfo(filepath).Length;
int filelength = size.ToString().Length;
if (filelength < 4)
result = size + "byte";
else if (filelength < 7)
result = Math.Round(Convert.ToDouble(size / 1024d), 2) + "KB";
else if (filelength < 10)
result = Math.Round(Convert.ToDouble(size / 1024d / 1024), 2) + "MB";
else if (filelength < 13)
result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024), 2) + "GB";
else
result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024 / 1024), 2) + "TB";
return result;
}
return result;
}
}
}
[原]FileHelper-文件操作辅助类的更多相关文章
- winform INI文件操作辅助类
using System;using System.Runtime.InteropServices;using System.Text; namespace connectCMCC.Utils{ // ...
- java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
java 线程 原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...
- Xamarin.Forms学习之Platform-specific API和文件操作
这篇文章的分享原由是由于上篇关于Properties的保存不了,调用SavePropertiesAsync()方法也不行,所以我希望通过操作文件的方式保存我的需要的数据,然后我看了一下电子书中的第二十 ...
- DateHelper.cs日期时间操作辅助类C#
//==================================================================== //** Copyright © classbao.com ...
- vbs连接sql server及写文件操作
此段代码是连接SQL SERVER的 代码内connMMSQL的参数要根据实际情况传入 Function connMMSQL(ip,user,pwd,database,strsql) Dim conn ...
- 前端学PHP之文件操作
× 目录 [1]文件类型 [2]文件属性 [3]目录路径[4]目录遍历[5]目录统计[6]目录增删[7]目录复制[8]文件操作[9]文件内容 前面的话 在程序运行时,程序本身和数据一般都存在内存中,当 ...
- python基础-文件操作
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...
- Matlab的部分文件操作
Author:Maddock Date:2015-01-20 判断文件是否存在 infilename = [str,'\lena.jpg']; sgc_exist = exist(infilename ...
- Delphi文件操作函数
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...
随机推荐
- CodeForces 705B (训练水题)
题目链接:http://codeforces.com/problemset/problem/705/B 题意略解: 两个人玩游戏,解数字,一个数字可以被分成两个不同或相同的数字 (3可以解成 1 2) ...
- IPC 机制简介
IPC 机制简介 概述 在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同.前者对Un ...
- DedeCMS全版本通杀SQL注入漏洞利用代码
EXP: Exp:plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\' or mid=@`\'` /*!50000u ...
- 如果jsp提交到action为空指针的话
很严重的一点:表单<form>有没有添加一个method="post",如果表单的这个没有写,肯定是空指针, 哎,被这个坑爹的代码,查了好久,特此记录下
- ssh项目删除
1.在页面添加删除跳转 <td><a href="deleteStandard.action?id=${sta.id }">删除</a>< ...
- sparkR操作HDFS上面的CSV文件
./bin/sparkR --packages com.databricks:spark-csv_2.10:1.3.0 --master yarn hdfs://master:9000/tmp/dem ...
- 爬虫的自我解剖(抓取网页HtmlUnit)
网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源`HtmlUnit`包,4行代码就OK啦,例子如下: final WebClient webClient=new ...
- ASP.NET MVC学习笔记-----ActionInvoker
还是这张图: 当ControllerFactory生成Controller实例后,这时就需要使用ActionInvoker来选择调用一个合适的Action执行.ASP.NET MVC提供的基类Cont ...
- Javascript 将图片的绝对路径转换为base64编码
Javascript将图片的绝对路径转换为base64编码 我们可以使用canvas.toDataURL的方法将图片的绝对路径转换为base64编码:在这我们引用的是淘宝首页一张图片如下: var i ...
- iOS设备屏幕像素总览
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4011728.html ,转载请注明出处. 本文永久地址为http://www.cnblogs.com/Ch ...