在Windows资源管理器中单独的文件名字符串?

时间:2012-05-23 08:50:11

标签: c# .net file io

注意:我已经将标签编辑为C#和.NET。

enter image description here

你可以在上面的图片中看到我在2009文件夹中的.pdf文件现在我的任务是获取_之前的字符串,这是我的id,字符串是文件名,后面是{{1是扩展名。

这些都是我在2009资源管理器下的Windows资源管理器中的文件名。

在sql中我想创建一个包含三列的表,其中包含第一个文件名。

.

在sql中我需要

1-AXJUHC_65927302.pdf

这种方式适用于所有文件名。

如果有人建议我如何使用bash或任何其他工具在Windows级别提取上述字段,然后将此id,filname,fileextension写入文本文件然后 我可以将它插入到sql中。

3 个答案:

答案 0 :(得分:2)

使用C#http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx中的FileInfo类获取完整的文件名和扩展名。

FileInfo file = new FileInfo(@"path");<br/>
string sFileName = file.Name;<br/>
string sExtension = file.Extension;

并为你的id获取第一部分使用类似

srting [] sFilename = sFileName.Split('_');
string sId = sFilename[0];

编辑:

获取目录中的所有文件:

Foreach(string path in Directory.GetFiles(@"Some_Path_Here"))<br/>
{`enter the code mentioned above here`}

答案 1 :(得分:1)

foreach ( string filePath in System.IO.Directory.EnumerateFiles ( pathOfDirectory ) )
{
    string filename = System.IO.Path.GetFileName ( filePath );
    string id = filename.Substring ( 0 , filename.IndexOf ( '_' ) );
    string extension = filename.Substring ( filename.LastIndexOf ( '.' ) + 1 );
}

你可以按照MrGTgo的建议使用FileInfo类,但是它会读取比你需要的更多的数据。

答案 2 :(得分:0)

您可以这样做:

根据需要获取文件的Path [让它成为filepath]:

然后你可以使用:

using System.IO;

string filename = Path.GetFileName(filepath); // returns "1-AXJUHC_65927302.pdf"
string id = Path.GetFileNameWithoutExtension(filename.Replace(".", "~").Replace("_", ".")).Replace("~", "."); // for "1-AXJUHC_65927302.pdf", returns "1-AXJUHC"
string fileextension = Path.GetExtension(filename).Substring(1);// returns "pdf"