using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Common.Files
{
public class FileOperator
{
/// <summary>
///
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="encoding">编码</param>
/// <returns>文件内容</returns>
public string ReadFile(string path, System.Text.Encoding encoding)
{
string tempContent = "";
using (StreamReader sr = new StreamReader(path, encoding))
{
tempContent = sr.ReadToEnd();
}
return tempContent;
}
/// <summary>
///
/// </summary>
/// <param name="path">文件的路径</param>
/// <param name="append">是否追加</param>
/// <param name="encoding">编码</param>
/// <param name="content">内容</param>
/// <returns>是否成功</returns>
public bool WriteFile(string path,bool append,System.Text.Encoding encoding,string content)
{
bool state = false;
try
{
using (StreamWriter sw = new StreamWriter(path, append, encoding))
{
sw.Write(content);
sw.Flush();
state = true;
}
}
catch
{
}
return state;
}
/// <summary>
/// 拷贝一个路径下的文件夹和文件
/// </summary>
/// <param name="olddirectory"></param>
/// <param name="newdirectory"></param>
/// <returns></returns>
public bool CopyDirectoryAndFiles(string olddirectory, string newdirectory)
{
bool state = false;
try
{
DirectoryInfo dis = new DirectoryInfo(newdirectory);
if (!dis.Exists)
{
Directory.CreateDirectory(newdirectory);
}
CopyAll(olddirectory, newdirectory, "");
state = true;
}
catch
{
}
return state;
}
/// <summary>
/// 递归拷贝一个文件夹的所有文件
/// </summary>
/// <param name="olddirectory"></param>
/// <param name="newdirectory"></param>
/// <param name="dir"></param>
protected void CopyAll(string olddirectory, string newdirectory, string dir)
{
DirectoryInfo dis = new DirectoryInfo(dir.Length > 0 ? (dir) : (olddirectory));
FileInfo[] files = dis.GetFiles();
foreach (FileInfo fi in files)
{
try
{
//拷贝文件
File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
}
catch (Exception ex)
{
try
{
File.Delete(string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
//string temp = ex.Message;
File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
}
catch
{
}
}
}
if (dis.GetDirectories().Length > 0)
{
for (int i = 0; i < dis.GetDirectories().Length; i++)
{
//创建目录
string tempNewPath = string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), dis.GetDirectories()[i].Name);
if (!Directory.Exists(tempNewPath))
Directory.CreateDirectory(tempNewPath);
CopyAll(olddirectory, newdirectory, dis.GetDirectories()[i].FullName);
}
}
}
/// <summary>
///
/// </summary>
/// <param name="oldFilePath"></param>
/// <param name="newFilePath"></param>
/// <returns></returns>
public bool CopyFile(string oldFilePath, string newFilePath)
{
bool state = false;
File.Copy(oldFilePath, newFilePath);
return state;
}
/// <summary>
///
/// </summary>
/// <param name="directory"></param>
/// <returns></returns>
public bool DelteDirectory(string directory)
{
bool state = false;
DeleteDirectoryAndFiles(directory);
return state;
}
/// <summary>
///
/// </summary>
/// <param name="path"></param>
protected void DeleteDirectoryAndFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
if (di.GetFiles().Length > 0)
DeleteFiles(path);
DirectoryInfo[] dis = di.GetDirectories();
if (dis.Length > 0)
{
foreach (DirectoryInfo tempdi in dis)
{
DeleteDirectoryAndFiles(tempdi.FullName);
if (tempdi.GetFiles().Length < 1 && tempdi.GetDirectories().Length < 1)
tempdi.Delete();
}
}
}
/// <summary>
/// 删除文件夹的所有文件
/// </summary>
/// <param name="path"></param>
protected void DeleteFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
{
try
{
fi.Delete();
}
catch
{
continue;
}
}
}
}
}
分享到:
相关推荐
文件夹的拷贝通常涉及到递归操作,因为一个文件夹可能包含多个子文件夹和文件。`System.IO.DirectoryInfo`类提供了`CopyTo`方法,可以用来复制整个目录结构。以下是一个简单的文件夹拷贝示例: ```csharp using ...
4. 文件夹和文件信息的展示:在程序中,可能会有一个函数负责递归遍历指定目录及其子目录,获取每个文件和子文件夹的信息,并将这些信息填充到UI组件中。例如,使用Directory.GetFiles和Directory.GetDirectories...
在C#编程中,文件查找是一项常见的任务,...通过以上知识,我们可以构建一个完整的C#文件查找工具,能够高效地按照文件名称或内容进行查找,并适用于各种场景。在实际开发中,可以根据具体需求调整和优化这些代码片段。
一、功能描述: 该软件只负责改掉过的文件,对于查找哪些文件被修改过使用非常方便。 特别适用于软件开发后期的维护工作,快速搜索...四、下载包中含有C#源码,对文件夹递归批量操作处理,是学习C#文件夹操作有帮助
这个名为“递归(c#.net源码).rar”的压缩包文件很可能包含了一系列示例代码,演示了如何在C#.NET环境中实现递归。 首先,让我们深入理解递归的基本原理。递归是当一个函数在其定义中调用自身时发生的情况。这种...
本项目“C# 批量删除文件,文件夹源代码”提供了一个实用工具,用于高效地清理指定目录下的文件和文件夹,这对于系统维护、软件开发以及日常的数据清理工作来说非常有用。下面我们将深入探讨这个程序可能涉及的关键...
要实现文件夹的递归复制,我们需要编写一个算法,该算法能够遍历目标文件夹中的所有文件和子文件夹,并逐个复制到新的位置。以下是一些关键步骤: 1. **遍历目录**:使用FindFirstFile和FindNextFile函数遍历源...
本项目提供了一套C#文件搜索的源码,对于初学者来说,这是一个很好的学习实例,可以帮助理解如何在C#环境中实现文件和目录的搜索功能。 首先,我们要了解C#中的`System.IO`命名空间,它提供了对文件、目录和流的...
在窗体上可以放置两个控件:一个TextBox用于输入要搜索的文件或文件夹名称,另一个Button作为触发搜索操作的按钮。此外,还可以添加一个ListView或者DataGridView来显示搜索结果。 1. **C# 源码解析**: - 文件...
总的来说,"定时删除日志文件含C#源码"是一个实用的工具,它结合了C#的编程优势和Windows系统的定时任务功能,帮助系统管理员有效地管理和清理日志文件,保持系统的高效运行。对于初学者,这是一个学习C#编程和文件...
这些类提供了丰富的静态方法,用于读取、写入、创建、移动和复制文件。 1. **FileInfo类**:代表一个文件的信息,包括路径、大小、是否存在等。我们可以使用FileInfo的CopyTo方法来复制单个文件。 2. **File类**:...
在IT领域,文件同步和复制是常见的操作,尤其在数据备份、文件分发和多设备协作中显得尤为重要。 文件夹同步的基本原理是对比两个文件夹中的内容,找出差异,并将变化的部分从源文件夹复制到目标文件夹。在这个...
这个"sharpziplib文件夹递归压缩解压缩源码.rar"是一个示例项目,专注于解决使用SharpZipLib库进行文件夹及其子文件夹递归压缩和解压缩的问题。下面我们将深入探讨SharpZipLib库以及如何实现递归压缩和解压缩。 ...
本实例将深入探讨如何使用C#来操作特定后缀名的文件夹,包括查找、遍历以及删除其中的子文件和子文件夹。我们将主要关注以下几个核心知识点: 1. **文件和文件夹操作的基础类**: 在C#中,`System.IO`命名空间提供...
"FileManage_fileManage_C#_搜索文件_"这个项目显然旨在提供一套工具,涵盖了文件操作的多个核心功能,包括文件和文件夹的管理、批量操作以及高级搜索功能。让我们详细探讨这些关键知识点。 1. **文件和文件夹的...
最后,`File.Copy()`执行实际的复制操作,第二个参数是目标文件路径,第三个参数为布尔值,表示是否覆盖已经存在的目标文件。 然而,上述代码只适用于单个目录下的文件复制。如果需要递归复制整个目录结构,包括子...
以下是一个简单的C#源码示例,展示如何遍历并打印指定目录及其所有子目录下的文件和子目录: ```csharp using System; using System.IO; class Program { static void Main(string[] args) { string root...
本主题聚焦于“C#解压缩文件夹保存目录结构”,这是一个在软件开发中常见的任务,涉及到文件系统操作和压缩算法的应用。下面将详细阐述相关知识点。 首先,解压缩文件夹通常会用到第三方库,如SharpZipLib或System....
首先,C#提供了丰富的类库来处理文件和目录操作,其中`System.IO`命名空间中的`Directory`类和`FileInfo`类是核心工具。`Directory`类提供了对文件夹的操作,如获取、创建、删除目录;而`FileInfo`类则用于处理单个...
`File`类提供了对单个文件的操作方法,如读取、写入、创建和复制,而`Directory`类则用于处理文件夹的相关操作,如创建、删除和遍历文件夹结构。 复制单个文件的基本步骤如下: 1. 使用`File`类的`Exists`方法检查...