1. 在一个目录下创建一个文件夹
if (!System.IO.Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
String path=@”C:/新文件夹的名字”
2. 时间的字符串表示法 20080616091219
System.DateTime.Now.ToString("yyyyMMdd"), System.DateTime.Now.ToString("HHmmss")
DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
3. 获取系统的特殊文件的路径
String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
//有下划线的为Environment.SpecialFolder的枚举,还有很多
4. 拷贝一个文件到另一个目录下
System.IO.File.Copy(要拷贝的文件目录,目的目录);
注意:两个目录都要是具体的文件名,不能是文件夹。
5. 取当前程序集。EXE文件所在的绝对路径
String locationPath =
System.Reflection.Assembly.GetExecutingAssembly().Location
6. 取得运行中的程序名字和路径(和上面的结果一样)
System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Substring(8);
System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
的意思就是取得运行中的程序名字和路径
但前面有file:///重要的格式
file:///D:/Project/bin/Debug/WindowsApplication.EXE
System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Substring(8);
的意思就是从第8位开始取得字符串
D:/Project/bin/Debug/WindowsApplication.EXE
7. 将文件目录按/号分割开(如上例中的目录)
string[] strLoc;
strLoc = locationPath.Split('//');
想取到哪一级目录就取到哪一级目录
String strParticalPath;
for (int j = 0; j < strLoc.Length - 1; j++)
{
strParticalPath += strLoc[j] + "//";
}
8. 打开某个文件夹/文件
System.Diagnostics.Process.Start(path);
path为文件夹目录
System.IO.File.Open(path2, FileMode.Open);
String path2=@”C:/新文件夹的名字/文件的名字”
9. 取得目录(m_path)下所有文件的文件名
//返回的是m_path目录里每一个.txt文件的完整的路径
//其中m_path为目录的完整路径
string[] fileName = System.IO.Directory.GetFiles(m_path,"*.txt");
//取得第一个.txt文件的路径
m_allFilePath = fileName[0];
//如果目录下还有子目录就用下面这个
string[] fileNames =System.IO.Directory.GetFiles(m_path,"*",SearchOption.AllDirectories);
10. 获取一个文件夹中所有文件的大小
long fileSize = 0;
string sOutDir = @"D:/data/CD01";
DirectoryInfo dirInfo = new DirectoryInfo(sOutDir);
foreach (FileInfo fileInfo in dirInfo.GetFiles())
{
fileSize += fileInfo.Length;
}
11. DirectoryInfo.GetFiles();DirectoryInfo.GetDirectories();DirectoryInfo.GetFileSystemInfos()比较
DirectoryInfo dir = new DirectoryInfo(path);// path为文件夹路径
FileInfo[] a = dir.GetFiles();//获取路径下文件的名字
DirectoryInfo[] b = dir.GetDirectories();//获取路径下文件夹的名字
FileSystemInfo[] c = dir.GetFileSystemInfos();//获取路径下文件和文件夹的名字
12. 一个文件夹(包括子文件夹)中所有文件的个数
public static int GetFileCount(string path)
{
System.IO.DirectoryInfo dir = new DirectoryInfo(path);
int count = dir.GetFiles().Length;
foreach (DirectoryInfo d in dir.GetDirectories())
{
count += GetFileCount(d.FullName);
}
return count;
}
13. 一个文件夹(包括子文件夹)中所有文件的大小
public static long FolderSize(string path)
{
long Fsize = 0;
try
{
FileInfo[] files = (new DirectoryInfo(path)).GetFiles();
foreach (FileInfo file in files)
{
Fsize += file.Length;
}
DirectoryInfo[] folders = (new DirectoryInfo(path)).GetDirectories();
foreach (DirectoryInfo folder in folders)
{
Fsize += FolderSize(folder.FullName);
}
}
catch (Exception ex)
{
return Fsize;
}
return Fsize;
}
14. 文件读写操作
Static void Main(string[] args)
{
const string filePath = @””;
FileStream fs = null;
try
{
Console.WriteLine(“开始往文件中写内容”);
fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
byte[] bytes = Encoding.Default.GetBytes(“这是一个字符串,将插入到文本文件中”);
//向流中写入指定的字节数组
fs.Write(bytes, 0, bytes.Length);
//将缓存区的内容存储到媒体并清除缓存区。
fs.Flush();
//将流指针移到开头
fs.Seek(0, SeekOrigin.Begin);
byte[] bytes2 = new byte[bytes.Length];
fs.Read(bytes2, 0, bytes.Length);
string str = Encoding.Default.GetString(bytes2);
Console.WriteLine(“从文件中读出的字符串为” + Environment.NewLine+str);
}
catch(IOException ex)
{
Console.WriteLine(“发生的文件处理的错误!” + ex.Message);
}
finally
{
Console.WriteLine(“不论是否发生异常,都会执行finally到这里”);
if(fs != null)
{
fs.Close();
}
Console.ReadLine();
}
}
15. 生成一个.txt文件,并往里写一串字符串。
fileName = @"C:/a.txt";
FileStream mystream = new FileStream(fileName, FileMode.OpenOrCreate);
StreamWriter Mywriter = new StreamWriter(mystream, Encoding.Default);
string text = "";
Mywriter.Write(text);
Mywriter.Close();
mystream.Close();
16. 删去某个文件
// m_allFilePath为文件的完整路径,包括后缀
System.IO.File.Delete(m_allFilePath);
删除文件夹
void DeleteDirectory(string path)
{
DirectoryInfo dir = new DirectoryInfo(path);
foreach (var item in dir.GetDirectories())
{
item.Delete(true);
}
dir.Delete(true);
}
设置环境变量
/// <summary>
/// 设置windows环境变量
/// </summary>
/// <param name="name">变量名称</param>
/// <param name="value">变量值</param>
public static void SetEnvironmentVariable(string name, string value)
{
RegistryKey regLocalMachine = Registry.LocalMachine;
RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEM
RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);
RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);
RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);
RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);
regEnvironment.SetValue(name, value);
}
给文件夹、文件添加权限
// <summary>
/// Adds an ACL entry on the specified directory for the specified account.
/// This function was taken directly from MSDN. It adds security rights to a folder
/// </summary>
/// <param name="FileName"></param>
/// <param name="Account">like @"BUILTIN\Administrators" or @"BUILTIN\Users" </param>
/// <param name="Rights">like FileSystemRights.FullControl</param>
/// <param name="ControlType">like AccessControlType.Allow</param>
///
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account, Rights, ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
/// <summary>
/// Adds an ACL entry on the specified directory for the specified account.
/// This function was taken directly from MSDN. It adds security rights to a file
/// </summary>
/// <param name="FileName"></param>
/// <param name="Account">like @"BUILTIN\Administrators" or @"BUILTIN\Users" </param>
/// <param name="Rights">like FileSystemRights.FullControl</param>
/// <param name="ControlType">like AccessControlType.Allow</param>
public static void AddFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new FileInfo object.
FileInfo fInfo = new FileInfo(FileName);
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = fInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
fInfo.SetAccessControl(fSecurity);
}
读取windows日志
/// <summary>
/// 读取windows 系统日志
/// </summary>
/// <returns></returns>
public static string ReadWindowsLog()
{
string[] logs = new string[] { "Application", "System", "Security" };
/*清空所有日志*/
//EventLog eventlog = new EventLog();
//foreach (var item in logs)
//{
// eventlog.Log = item;
// eventlog.Clear();
//}
/*清空所有日志*/
StringBuilder sb = new StringBuilder();
foreach (string log in logs)
{
EventLog myLog = new EventLog();
myLog.Log = log;
//myLog.MachineName = "rondi-agt0qf9op";
foreach (EventLogEntry entry in myLog.Entries)
{
//EventLogEntryType枚举包括:
//Error 错误事件。
//FailureAudit 失败审核事件。
//Information 信息事件。
//SuccessAudit 成功审核事件。
//Warning 警告事件。
if (entry.EntryType == EventLogEntryType.Error || entry.EntryType == EventLogEntryType.Warning)
{
sb.Append(log);
sb.Append(entry.EntryType.ToString());
sb.Append(entry.TimeWritten.ToString());
sb.Append(entry.Message + "\r\n");
}
}
}
return sb.ToString();
}
主要方法就是System.Environment.GetFolderPath(SpecialFolder) ; 以下是这个枚举 public enum SpecialFolder
全部输出一遍 |
全部输出一遍
Type specialFolder = typeof(System.Environment.SpecialFolder);
foreach (var s in Enum.GetNames(specialFolder))
{
string value = Enum.Format(specialFolder, Enum.Parse(specialFolder, s), "d");
textBox1.AppendText(string.Format("{0,-11}={1} \r\n", s, value));
textBox1.AppendText(string.Format("'{0}' \r\n", (System.Environment.SpecialFolder)(int.Parse(value))));
textBox1.AppendText(Environment.GetFolderPath((System.Environment.SpecialFolder)(int.Parse(value)))+"\r\n");
}
此处直接输出到textBox1中了 这个自己增加进行测试吧。
系统特殊文件夹是包含公共信息的文件夹,如“Program Files”、“Programs”、“System”或“Startup”。特殊文件夹在默认情况下由系统设置,或者由用户在安装 Windows 的某个版本时显式进行设置。
Environment.GetFolderPath 方法
获取指向由指定枚举标识的系统特殊文件夹的路径。
命名空间:System
public static string GetFolderPath ( SpecialFolder folder );
参数
folder 标识系统特殊文件夹的枚举常数。如下:
ApplicationData 目录,它用作当前漫游用户的应用程序特定数据的公共储存库。
漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络服务器上,当用户登录到某个系统上时,它会加载到该系统。
CommonApplicationData 目录,它用作所有用户使用的应用程序特定数据的公共储存库。
CommonProgramFiles 用于应用程序间共享的组件的目录。
Cookies 用作 Internet Cookie 的公共储存库的目录。
Desktop 逻辑桌面,而不是物理文件系统位置。
DesktopDirectory 用于物理上存储桌面上的文件对象的目录。
不应将此目录与桌面文件夹本身混淆,后者是虚拟文件夹。
Favorites 用作用户收藏夹项的公共储存库的目录。
History 用作 Internet 历史记录项的公共储存库的目录。
InternetCache 用作 Internet 临时文件的公共储存库的目录。
LocalApplicationData 目录,它用作当前非漫游用户使用的应用程序特定数据的公共储存库。
MyComputer “我的电脑”文件夹。
MyMusic “My Music”文件夹。
MyPictures “My Pictures”文件夹。
Personal 用作文档的公共储存库的目录。
ProgramFiles “Program files”目录。
Programs 包含用户程序组的目录。
Recent 包含用户最近使用过的文档的目录。
SendTo 包含“发送”菜单项的目录。
StartMenu 包含“开始”菜单项的目录。
Startup 对应于用户的“启动”程序组的目录。
每当用户登录、启动 Windows NT 或更高版本或启动 Windows 98 时,系统均会启动这些程序。
System “System”目录。
Templates 用作文档模板的公共储存库的目录。
返回值
如果指定系统的特殊文件夹实际存在于您的计算机上,则为到该文件夹的路径;否则为空字符串 ("")。 如果系统未创建文件夹、已删除现有文件夹,或者文件夹是不对应物理路径的虚拟目录(例如“我的电脑”),则该文件夹不会实际存在。
例子:
String Path=Environment.GetFolderPath(Environment.SpecialFolder.Favorites);//返回收藏夹位置