先学会如何使用OpenFileDialog和SaveFileDialog控件浏览和选择文件、使用System.IO.File和System.IO.Directory的对象来操纵文件系统(文件和目录)。

实际上OpenFileDialog控件只是让用户选择文件,而不是打开文件——故选中双击,退出对话框:

  1. selectFile.InitialDirectory = @"F:\"; //设置初始目录
  2. selectFile.Title = "打开文件";
  3. selectFile.FileName = ""; //设置默认文件名

创建文件过滤器(过滤器格式—Description:*.extension):

  1. selectFile.Filter = "所有文件 (*.*) | *.*|文本文件 (*.txt) | *.txt";
  2. selectFile.FilterIndex = ; //设置默认的过滤器,1为第一个

最后得到对话框选择的文件名:

  1. if (selectFile.ShowDialog() == DialogResult.OK) //根据用户是否确认选择,采取相应操作
  2. this.FilePath.Text = selectFile.FileName;
  3. else
  4. this.FilePath.Text = "";

SaveFileDialog与OpenFileDialog类似:

  1. inputFile.InitialDirectory = @"F:\";
  2. inputFile.Title = "保存文件";
  3. inputFile.FileName = "";
  4. inputFile.Filter = "文本文件 (*.txt) | *.txt|所有文件 (*.*) | *.*";
  5. if(inputFile.OverwritePrompt)
  6. {
  7. inputFile.OverwritePrompt = false; //saveFileDialog才有的属性,默认为true,表示如果用户选择了已有文件,替换已有文件前让用户确认
  8. if(inputFile.ShowDialog() == DialogResult.OK)
  9. {
  10. FilePath.Text = inputFile.FileName; //自动将绝对路径(完整路径)返回
  11. }
  12. }

在File类中,具体的文件操作有:创建、删除、移动、重命名文件和目录。

复制:File.copy(源路径, 目标路径)、删除:File.Delete(文件路径)、移动或重命名:File.Move(源路径/源文件, 目标路径/重命名)。可用File.Exists(path)检测文件是否存在。

通过File对象、FileAttributes对象获取文件属性:

通过File对象获取:创建时间GetCreationTime(path)、最后被访问时间GetLastAccessTime(path)、最后被修改时间GetLastWriteTime(path)。

通过FileAttributes对象获取,然后通过与FileAttributes的每一种属性(如.Normal、.Hidden、.ReadOnly、.System、.Temporary、.Archive)相&,将结果Convert.ToBoolean转换成true、false,true则说明满足该属性,例如:

FileAttributes fattr = File.GetAttributes(path);

attr.Append("只读: " + Convert.ToBoolean(fattr & FileAttributes.ReadOnly) + "\r\n");

目录操作Directory类:创建、移动或重命名、删除:

  1. string path = @"F:\shutao";
  2. Directory.CreateDirectory(path);
    DirectoryInfo dir = new DirectoryInfo(@"E:\shutao");    //获得目录的信息
    FileInfo[] files = dir.GetFiles();  //通过Directory对象获得,目录下的文件列表(文件数组)
  3. //Directory.Move(path + @"\2", path + "1" + @"\2\");
  4. //Directory.Delete(path + "1", true);
  5. Directory.Delete(path);
  1. //获取文件名(包含路径)和文件路径(不含文件名,末尾也不带\):都有两种方法,通过获得文件本身的属性和调用Path类的静态方法
  2. FileInfo file = new FileInfo(@"E:\shutao\shutao.txt");
  3. MessageBox.Show(file.FullName);
  4. MessageBox.Show(file.DirectoryName);
  5. MessageBox.Show(Path.GetDirectoryName(file.FullName));

工程的运行程序的路径(Debug\路径):MessageBox.Show(System.AppDomain.CurrentDomain.BaseDirectory)。

读写文本文件

Write:

  1. 首先创建一个StreamWriter对象:StreamWriter writer= new StreamWriter(@"文件名")。选项:true追加,false创建(默认选项)。
  2. 写入数据有两种常用的:writer.Write("text1")、writer.WriteLine("text1")。
  3. 使用完毕一定要释放:(1):关闭文件writer.Close()、(2):确保文件对象被完全释放:writer.Dispose()。

Read:

使用StreamReader类,与使用StreamWriter很相似,关键区别在于文件不存在时,处理的方式不同:

StreamWriter:当文件不存在时,新建一个文件——StreamReader:抛出异常。

具体使用:

  1. 创建一个StreamReader对象:StreamReader reader = new StreamReader("F:/shutao.txt")。
  2. 读取数据有两种常用的方式:读取整个文件textBox1.Text = reader.ReadToEnd()、或者每次读取一行str = reader.ReadLine() + "\r\n"。
  3. 关闭与释放。

C# — FileHandler的更多相关文章

  1. Tomcat报java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler

    最近在生产环境部署Tomcat的时候,在启动的时候,在控制台报"java.lang.ClassNotFoundException: 1catalina.org.apache.juli.Fil ...

  2. DownLoadFile - FileHandler

    C# 跳转新页面 判断URL文件是不是在于在. C# 指定物理目录下载文件,Response.End导致“正在中止线程”异常的问题 public class FileHandler { public ...

  3. Tomcat报错java.lang.ClassNotFoundException: 2localhost.org.apache.juli.FileHandler

    Can't load log handler "1catalina.org.apache.juli.FileHandler" java.lang.ClassNotFoundExce ...

  4. java.util.logging.FileHandler

    java.util.logging.FileHandler java自带的日志功能,FileHandler可以写日志到文件系统,并且自己维护日志的增删,比c++不知道强多少 FileHandler(f ...

  5. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  6. Python碎碎念

    1. 如何添加路径 主要有以下两种方式: 1> 临时的 import sys sys.path.append('C:\Users\Victor\Desktop') 2> 永久的 在Linu ...

  7. 跟着老男孩教育学Python开发【第四篇】:模块

    双层装饰器示例 __author__ = 'Golden' #!/usr/bin/env python # -*- coding:utf-8 -*-   USER_INFO = {}   def ch ...

  8. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  9. Python(五)模块

    本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...

随机推荐

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q19-Q20)

    Question 19 You are designing a custom SharePoint 2010 solution package. It will include a feature t ...

  2. iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

    转载自:http://www.jianshu.com/p/e38a609f786e

  3. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  4. 使用fastboot工具刷入recovery.img、boot.img、system.img等

    在Android SDK目录的platform-tools目录下有fastboot.exe刷机工具(注:需要将机器进入fastboo模式) 刷recovery.img: fastboot flash ...

  5. 你真的了解UITextField吗?

    一:首先查看一下关于UITextField的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextIn ...

  6. 【Android】用HandlerThread模拟AsyncTask功能(ThreadTask)

    前言 AsyncTask是个好东西,能处理绝大多数应用线程和更新UI的任务,由于其内部使用了静态线程池,如果你有一堆异步任务(例如全局定时更新数据.同一个Activity中多个AsyncTask同时执 ...

  7. 网络热恋之NSURLSession

    // // ViewController.m // NSURLSession代理简介 #import "ViewController.h" @interface ViewContr ...

  8. CommonJS的模块规范

    CommonJS对模块的定义十分简单,主要分为模块引用.模块定义和模块标识. 1.模块引用 var math = require('math');//这个方法接受模块标识,以此引入一个模块的API到当 ...

  9. asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现

    asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现 用这个可以做模板首页进行输出,也可以自已自定义进行扩展 //得到读取到的文本到string中 string resultTe ...

  10. 使用T-SQL进行活动目录查询

    最近在某个项目中,需要针对TFS的用户按照所属的AD组来进行数据分析,但发现TFS中并没有存储用户所属的组信息,故考虑直接从AD中提取这个信息并存放在SQL Server的数据库表里面去. 经过一番G ...