C# — FileHandler
先学会如何使用OpenFileDialog和SaveFileDialog控件浏览和选择文件、使用System.IO.File和System.IO.Directory的对象来操纵文件系统(文件和目录)。
实际上OpenFileDialog控件只是让用户选择文件,而不是打开文件——故选中双击,退出对话框:
- selectFile.InitialDirectory = @"F:\"; //设置初始目录
- selectFile.Title = "打开文件";
- selectFile.FileName = ""; //设置默认文件名
创建文件过滤器(过滤器格式—Description:*.extension):
- selectFile.Filter = "所有文件 (*.*) | *.*|文本文件 (*.txt) | *.txt";
- selectFile.FilterIndex = ; //设置默认的过滤器,1为第一个
最后得到对话框选择的文件名:
- if (selectFile.ShowDialog() == DialogResult.OK) //根据用户是否确认选择,采取相应操作
- this.FilePath.Text = selectFile.FileName;
- else
- this.FilePath.Text = "";
SaveFileDialog与OpenFileDialog类似:
- inputFile.InitialDirectory = @"F:\";
- inputFile.Title = "保存文件";
- inputFile.FileName = "";
- inputFile.Filter = "文本文件 (*.txt) | *.txt|所有文件 (*.*) | *.*";
- if(inputFile.OverwritePrompt)
- {
- inputFile.OverwritePrompt = false; //saveFileDialog才有的属性,默认为true,表示如果用户选择了已有文件,替换已有文件前让用户确认
- if(inputFile.ShowDialog() == DialogResult.OK)
- {
- FilePath.Text = inputFile.FileName; //自动将绝对路径(完整路径)返回
- }
- }
在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类:创建、移动或重命名、删除:
- string path = @"F:\shutao";
- Directory.CreateDirectory(path);
DirectoryInfo dir = new DirectoryInfo(@"E:\shutao"); //获得目录的信息
FileInfo[] files = dir.GetFiles(); //通过Directory对象获得,目录下的文件列表(文件数组)- //Directory.Move(path + @"\2", path + "1" + @"\2\");
- //Directory.Delete(path + "1", true);
- Directory.Delete(path);
- //获取文件名(包含路径)和文件路径(不含文件名,末尾也不带\):都有两种方法,通过获得文件本身的属性和调用Path类的静态方法
- FileInfo file = new FileInfo(@"E:\shutao\shutao.txt");
- MessageBox.Show(file.FullName);
- MessageBox.Show(file.DirectoryName);
- MessageBox.Show(Path.GetDirectoryName(file.FullName));
工程的运行程序的路径(Debug\路径):MessageBox.Show(System.AppDomain.CurrentDomain.BaseDirectory)。
读写文本文件:
Write:
- 首先创建一个StreamWriter对象:StreamWriter writer= new StreamWriter(@"文件名")。选项:true追加,false创建(默认选项)。
- 写入数据有两种常用的:writer.Write("text1")、writer.WriteLine("text1")。
- 使用完毕一定要释放:(1):关闭文件writer.Close()、(2):确保文件对象被完全释放:writer.Dispose()。
Read:
使用StreamReader类,与使用StreamWriter很相似,关键区别在于文件不存在时,处理的方式不同:
StreamWriter:当文件不存在时,新建一个文件——StreamReader:抛出异常。
具体使用:
- 创建一个StreamReader对象:StreamReader reader = new StreamReader("F:/shutao.txt")。
- 读取数据有两种常用的方式:读取整个文件textBox1.Text = reader.ReadToEnd()、或者每次读取一行str = reader.ReadLine() + "\r\n"。
- 关闭与释放。
C# — FileHandler的更多相关文章
- Tomcat报java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler
最近在生产环境部署Tomcat的时候,在启动的时候,在控制台报"java.lang.ClassNotFoundException: 1catalina.org.apache.juli.Fil ...
- DownLoadFile - FileHandler
C# 跳转新页面 判断URL文件是不是在于在. C# 指定物理目录下载文件,Response.End导致“正在中止线程”异常的问题 public class FileHandler { public ...
- Tomcat报错java.lang.ClassNotFoundException: 2localhost.org.apache.juli.FileHandler
Can't load log handler "1catalina.org.apache.juli.FileHandler" java.lang.ClassNotFoundExce ...
- java.util.logging.FileHandler
java.util.logging.FileHandler java自带的日志功能,FileHandler可以写日志到文件系统,并且自己维护日志的增删,比c++不知道强多少 FileHandler(f ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- Python碎碎念
1. 如何添加路径 主要有以下两种方式: 1> 临时的 import sys sys.path.append('C:\Users\Victor\Desktop') 2> 永久的 在Linu ...
- 跟着老男孩教育学Python开发【第四篇】:模块
双层装饰器示例 __author__ = 'Golden' #!/usr/bin/env python # -*- coding:utf-8 -*- USER_INFO = {} def ch ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
随机推荐
- ORA-03113解决方法
场景: 碰到ORA-00257归档日志写满的解决方法这篇日志当中描述的归档日志写满的情况. 此时我想将数据库切换到非归档模式,参考如何启动或关闭oracle的归档(ARCHIVELOG)模式进行操作, ...
- Android 短视频拍摄、拍照滤镜 第三方库SDK
视频 1.趣拍云服务 http://vcs.qupai.me/ 拍照 1.camera360 SDk 拍照滤镜 http://www.camera360.com/ 2 .凃图 http://tusdk ...
- UITextFiled,UITextView长度限制
长度限制用到的地方很多,但是需求都不一样.有的要求全部字符按一个处理,有的要求英文字母按一个,中文按两个,emoji按四个.这样就会遇到各种各样奇怪的问题,再被虐了无数次后,终于解决掉了.下面就来写写 ...
- android自定义activity
今天公司有个需要需要自动弹出界面,而dialog又不符合要求,所以自定义的一个activity的样式 首先在androidmainfest.xml上注册你的activity <activity ...
- View的事件体系
View的滑动 实现手段 优点 缺点 备注 scrollTo/scrollBy 使用简单 只能滑动view的内容,并不会滑动view本身. 且内容超出view本身的布局范围部分的不会显示 不适合有交互 ...
- iOS文件解压&&数据加密
一文件压缩.这里我们需要一个第三方SSZipArchive(需要添加libz.td) #import "ViewController.h" #import "SSZipA ...
- JQuery制作简单的网页导航特效
使用JQuery中hover()方法,使其根据鼠标的移动简单的改变背景颜色; hover();用于模拟鼠标指针悬停事件,当鼠标指针移动到元素上时,会触发指定的第一个函数,当鼠标指针移除这个元素时,会触 ...
- 你知道C#中的Lambda表达式的演化过程吗
你知道C#中的Lambda表达式的演化过程吗? 阅读目录 委托的使用 匿名方法 Func和Action Lambda的诞生 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西 ...
- 哭瞎!360云盘将关停,你的几十T照片和文件该怎么办
IDO老徐刚得到了一个非常不开心的消息,360云盘将停止个人云盘服务...进行业务转型,在网盘存储.传播内容的合法性和安全性得到彻底解决之前不再考虑恢复,之后转型企业云服务. 而且之前共享的所有资料, ...
- ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []
一ORACLE 10.2.0.5.0 标准版的数据库的告警日志出现ORA-00600错误,具体错误信息如下所示 Errors in file /u01/app/oracle/admin/SCM2/bd ...