C#文件操作

原创 2007年10月10日 09:52:00
 
C#文件操作
 
获取文件的版本信息:
FileVersionInfo myFileVersionInfo1 = FileVersionInfo.GetVersionInfo("D://TEST.DLL");
textBox1.Text="版本号: " + myFileVersionInfo1.FileVersion; 
 
 
更改文件属性,删除只读文件:
下例欲将E:/test.txt文件拷贝至D:/tmp/test.txt,但D:/tmp/test.txt已经存在。
//File.Copy(sourceFile,destinationFile,true); 用来拷贝文件
//当destinationFile已经存在时,无法将文件file1拷贝到目标文件,
//因此先删除destination文件,File.Delete()方法不能删除只读文件,
//因此,如果文件属性为只读(Attributes属性中会包含有"ReadOnly"),
//先把文件属性重置为Normal,然后再删除:
string file1="E://test.txt";
string destinationFile="d://tmp//test.txt";
if(File.Exists(destinationFile))
{
 FileInfo fi=new FileInfo(destinationFile);
 if(fi.Attributes.ToString().IndexOf("ReadOnly")!=-1)
  fi.Attributes=FileAttributes.Normal;
  File.Delete(destinationFile);
}
File.Copy(file1,destinationFile,true);
  判断文件是否存在:File.Exists(string filePath)
  判断目录是否存在:Directory.Exists("D://LastestVersion")
  按行读取文件:
int fileCount=0;
// Open the file just specified such that no one else can use it.
StreamReader sr = new StreamReader(textBox1.Text.Trim());
while(sr.Peek() > -1)//StreamReader.Peek()返回下一个可用字符,但不使用它
{
 listBox1.Items.Add(sr.ReadLine());
 fileCount++;
}
sr.Close();
  按行写入文件:
StreamWriter sw = new StreamWriter("D://result.txt");
for(int i=0;i<10;i++)
{
 sw.WriteLine("这是第"+i.ToString()+"行数据");
}
 
方法二:
 
private const int FO_DELETE = 0x3;
private const ushort FOF_NOCONFIRMATION = 0x10;
private const ushort FOF_ALLOWUNDO = 0x40;
[DllImport("shell32.dll", SetLastError=true, CharSet=CharSet.Unicode)]
private static extern int SHFileOperation([In,Out] _SHFILEOPSTRUCT str);
 
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public class _SHFILEOPSTRUCT
{
public IntPtr hwnd;
public UInt32 wFunc;
public string pFrom;
public string pTo;
public UInt16 fFlags;
public Int32 fAnyOperationsAborted;
public IntPtr hNameMappings;
public string lpszProgressTitle;
}
public static int Delete(string path)
{
_SHFILEOPSTRUCT pm = new _SHFILEOPSTRUCT();
pm.wFunc = FO_DELETE;
pm.pFrom = path + '/0';
pm.pTo = null;
pm.fFlags = FOF_ALLOWUNDO ¦ FOF_NOCONFIRMATION;
return SHFileOperation(pm);
}
调用:Class1.Delete("C://temp.txt");
注:返回值为0表示调用成功,非0表示调用失败。
需要引用System.Runtime.InteropServices命名空间。
 

【C#】C#之类

类 一、对象 把一个东西看成对象,我们就可以独立的去审查它的性质,它的行为,进而研究它和其他对象的关系。同样,在程序中使用对象的概念,就让我们可以把一个程序看成是很多对象相互作用的结果。对象有属性...
  • binggetong
  • binggetong
  • 2015年10月31日 10:39
  • 497

编写高效率的C#代码

周末空闲,选读了一下一本很不错的C#语言使用的书,特此记载下便于对项目代码进行重构和优化时查看。 Standing On Shoulders of Giants,附上思维导图,其中标记的颜色越深表示...
  • Robin022
  • Robin022
  • 2017年04月07日 07:34
  • 802

关于c#中的事件

c#事件学习
  • Joyhen
  • Joyhen
  • 2013年01月14日 11:32
  • 9196

C#安装和基础学习

C#安装学习C#视频链接:http://www.bilibili.com/video/av1422127/可以到官网查看安装包或百度下载 下载地址:https://www.visualstudio....
  • liuzp111
  • liuzp111
  • 2016年11月01日 23:21
  • 897

C#使用Tesseract OCR 解析验证码

之前我在C#简单数字验证码解析>>一文中介绍了用C#识别简单不变形数字验证码,但是对于识别变形的 或生成位置变化比较频繁的 验证码的准确率却不高。 下面介绍一个开源的OCR引擎Tesseract2...
  • xwx1122
  • xwx1122
  • 2014年12月25日 16:08
  • 2352

C#中的Attribute详解(下)

从上篇里我们可以看到,Attribute似乎总跟public、static这些关键字(Keyword)出现在一起。莫非使用了Attribute就相当于定义了新的修饰符(Modifier)吗?让我们一窥...
  • xiaouncle
  • xiaouncle
  • 2017年04月18日 16:04
  • 1666

C#操作符??和?:用法

先看如下代码:   string strParam =Request.Params["param"]; if ( strParam== null ) {    strParam= ""; }   st...
  • lybwwp
  • lybwwp
  • 2016年05月05日 17:47
  • 2482

java与C#的比较

一、C#和java哪个更好?        几天前,我的北理工研究生面试,老师问了我这样一个问题,你认为C#和java哪个更好?那么,作为读者的你,会怎么回答这道题呢?        其实,在我看来,...
  • lu930124
  • lu930124
  • 2016年01月16日 10:34
  • 18407

关于C# 中的封装

今天开始关于深入.NET平台与C#编程的学习,第一章中讲到关于封装的概念及应用,部分学员感觉比较的抽象,现在将C#中的封装相关的知识点整理了一下,希望能对你的学习带来帮助。 封装的概念 ...
  • 279503482
  • 279503482
  • 2014年03月07日 13:06
  • 3453

C# in关键字你造吗

上下文in关键字大致有三种 第一:在foreach中使用 用于遍历数组或集合foreach 语句对实现 System.Collections.IEnumerable 或 System.Co...
  • w200221626
  • w200221626
  • 2016年08月30日 17:21
  • 2623
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#文件操作
举报原因:
原因补充:

(最多只允许输入30个字)