首页 > 开发 > 综合 > 正文

C#文件操作

2024-07-21 02:27:04
字体:
来源:转载
供稿:网友

获取文件的版本信息:

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命名空间。


 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表