永发信息网

请教一个.net里面获得一个文件夹里所有文件的方法

答案:2  悬赏:40  手机版
解决时间 2021-03-16 22:13
我想在一个页面里显示D盘my文件夹里面的所有文件名,并能下载(大家告诉我怎么获得每个文件名我就知道怎么下载了),想用一个表格输出,第一列是文件名,第二列是下载的选择。请问怎么实现??
答对马上追分!
最佳答案
发个类给你,记得加分啊

using System;
using System.IO;
using System.Text;
using System.Data;



/// <summary>
/// 文件操作类
/// </summary>
public class FileObj : IDisposable
{
private bool _alreadyDispose = false;

#region 构造函数
public FileObj()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
~FileObj()
{
Dispose(); ;
}

protected virtual void Dispose(bool isDisposing)
{
if (_alreadyDispose) return;
//if (isDisposing)
//{
// if (xml != null)
// {
// xml = null;
// }
//}
_alreadyDispose = true;
}
#endregion

#region IDisposable 成员

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

#endregion

#region 取得文件后缀名

/// <summary>
/// 取后缀名
/// </summary>
/// <param name="filename">文件名</param>
/// <returns>.gif|.html格式</returns>
public static string GetPostfixStr(string filename)
{
int start = filename.LastIndexOf(".");
int length = filename.Length;
string postfix = filename.Substring(start, length - start);
return postfix;
}
#endregion

#region 取得文件名

/// <summary>
/// 取得文件名
/// </summary>
/// <param name="filename">文件名</param>
/// <returns>文件名</returns>
public static string GetFileName(string fileUrl,string dir)
{
return fileUrl.Substring((fileUrl.Length - dir.Length) > fileUrl.Length ? 0 : dir.Length);
}
#endregion

#region 写文件

/// <summary>
/// 写文件
/// </summary>
/// <param name="Path">文件路径</param>
/// <param name="Strings">文件内容</param>
public static void WriteFile(string Path, string Strings)
{
if (!System.IO.File.Exists(Path))
{
System.IO.FileStream f = System.IO.File.Create(Path);
f.Close();
}
System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, false, System.Text.Encoding.GetEncoding("gb2312"));
f2.Write(Strings);
f2.Close();
f2.Dispose();
}
#endregion

#region 读文件

/// <summary>
/// 读文件
/// </summary>
/// <param name="Path">文件路径</param>
/// <returns></returns>
public static string ReadFile(string Path)
{
string s = "";
if (!System.IO.File.Exists(Path))
s = "不存在相应的目录";
else
{
StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));
s = f2.ReadToEnd();
f2.Close();
f2.Dispose();
}

return s;
}
#endregion

#region 追加文件

/// <summary>
/// 追加文件
/// </summary>
/// <param name="Path">文件路径</param>
/// <param name="strings">内容</param>
public static void FileAdd(string Path, string strings)
{
StreamWriter sw = File.AppendText(Path);
sw.Write(strings);
sw.Flush();
sw.Close();
}
#endregion

#region 拷贝文件

/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="OrignFile">原始文件</param>
/// <param name="NewFile">新文件路径</param>
public static void FileCoppy(string orignFile, string NewFile)
{
File.Copy(orignFile, NewFile, true);
}

#endregion

#region 删除文件

/// <summary>
/// 删除文件
/// </summary>
/// <param name="Path">路径</param>
public static void FileDel(string Path)
{
File.Delete(Path);
}
#endregion

#region 移动文件

/// <summary>
/// 移动文件
/// </summary>
/// <param name="OrignFile">原始路径</param>
/// <param name="NewFile">新路径</param>
public static void FileMove(string orignFile, string NewFile)
{
File.Move(orignFile, NewFile);
}
#endregion

#region 在当前目录下创建目录

/// <summary>
/// 在当前目录下创建目录
/// </summary>
/// <param name="OrignFolder">当前目录</param>
/// <param name="NewFloder">新目录</param>
public static void FolderCreate(string orignFolder, string NewFloder)
{
Directory.SetCurrentDirectory(orignFolder);
Directory.CreateDirectory(NewFloder);
}
#endregion

#region 递归删除文件夹目录及文件

/// <summary>
/// 递归删除文件夹目录及文件
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
public static void DeleteFolder(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
}

}

#endregion

#region 将指定文件夹下面的所有内容copy到目标文件夹下面 果目标文件夹为只读属性就会报错。

/// <summary>
/// 指定文件夹下面的所有内容copy到目标文件夹下面
/// </summary>
/// <param name="srcPath">原始路径</param>
/// <param name="aimPath">目标文件夹</param>
public static void CopyDir(string srcPath, string aimPath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if (!Directory.Exists(aimPath))
Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
//如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
//string[] fileList = Directory.GetFiles(srcPath);
string[] fileList = Directory.GetFileSystemEntries(srcPath);
//遍历所有的文件和目录
foreach (string file in fileList)
{
//先当作目录处理如果存在这个目录就递归Copy该目录下面的文件

if (Directory.Exists(file))
CopyDir(file, aimPath + Path.GetFileName(file));
//否则直接Copy文件
else
File.Copy(file, aimPath + Path.GetFileName(file), true);
}

}
catch (Exception ee)
{
throw new Exception(ee.ToString());
}
}

#endregion

#region 读取文件夹

/// <summary>
/// 显示文件夹内容
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
public static DataTable ShowFolder(string dir)
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("fname", typeof(string));
dt.Columns.Add("fType", typeof(string));

string[] Folders = System.IO.Directory.GetDirectories(dir);
string[] files = System.IO.Directory.GetFiles(dir);

for (int i = 0; i < Folders.Length; i++)
{
dt.Rows.Add(GetFileName(Folders[i],dir), "Folders");
}
for (int i = 0; i < files.Length; i++)
{
dt.Rows.Add(GetFileName(files[i], dir), "files");
}
return dt;
}

#endregion

}
全部回答
在窗体上添加2个文本框,1个按钮: 其中1个文本框用来输入:源文件夹,另1个文本框用来输入目标文件夹 1个按钮编写代码: private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click dim mysourcefolder as string if microsoft.visualbasic.right(textbox1.text, 1) = "\" then mysourcefolder = textbox1.text else mysourcefolder = textbox1.text & "\" end if dim mydestfolder as string if microsoft.visualbasic.right(textbox2.text, 1) = "\" then mydestfolder = textbox2.text else mydestfolder = textbox2.text & "\" end if dim mydir as new system.io.directoryinfo(mysourcefolder) dim myfiles() as system.io.fileinfo = mydir.getfiles("*.txt") for each myfile as system.io.fileinfo in myfiles system.io.file.copy(mysourcefolder & myfile.name, mydestfolder & myfile.name, true) '允许同名覆盖,否则为false next end sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是男生,身高175,体重90KG左右,腹部有很
sina+sinb=3/5,cosa+cosb=4/5
三杢子烧烤地址在哪,我要去那里办事
讯美高清摄像头怎么设置动态录像
同城便利连锁NO.002这个地址在什么地方,我要
电白县罗坑水库地址好找么,我有些事要过去,
追女生,现在是朋友,情人节表白还不是时候,
赛克电动车5块电池连接
求终极一家小说主夏美 完结的不要悲文 好看的
中哪些诗句最能表达诗人对心中恋人的爱慕之情
美图v4有没有型号是mx5的
求金立e5手动刷机教程。(下载了一个刷机包,
南奇星造型专家我想知道这个在什么地方
1Cr17Ni2 和201不锈钢材质 有什么区别差异在
我想自己做点小买卖。但不知道做什么行业,本
推荐资讯
蠡县的高新技术产业园
英国达人里面的评委三爷是谁
急求;如何把明星的照片弄到QQ秀上(真脸秀)
信用卡年费是啥意思?具体时间是指?是刷卡三
csol一般在星期几更新?
武汉江汉二桥不收费,分单双号,那有没有限号
美国电影 一个青年在风雪交加的气象站看电视,
第六次全国人口普查山东烟台海阳怎么不给计划
《秋殇别恋》这首歌好像有两个版本,歌词不一
为什么橄榄核七喜有一个小
面包醒发箱下面那个烧水槽漏水了怎么办
读大学想在外面租一个单间住,58同城上的靠谱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?