为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用文件名的前几个字母创建文件夹?

如何使用文件名的前几个字母创建文件夹?

C#
MM们 2021-12-25 18:34:31
所以我检查了基本的东西,但我想做以下事情:我有 5 个文件,比如说:X1_word_date.pdf、XX1_word_date.pdf 等...我想创建一个文件夹结构,如:C:\PATH\X1、C:\PATH\XX1 等...那么如何将文件名中“_”之前的第一个字母放入字符串中?我的想法是我使用 Directory.CreateDirectory 而不是组合主路径和字符串,所以我得到了文件夹。我怎么做?帮助表示赞赏。
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

string fileName = "X1_word_date.pdf";

string[] tokens = fileName.Split('_');

string myPath = "C:\\PATH\\";

Directory.CreateDirectory( myPath + tokens[0]); 

像这样的事情应该有效。使用Split()还将允许处理大于 9 的数字


查看完整回答
反对 回复 2021-12-25
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

使用简单的字符串方法,如Split和System.IO.Path类:


var filesAndFolders = files

.Select(fn => new

{

    File = fn,

    Dir = Path.Combine(@"C:\PATH", Path.GetFileNameWithoutExtension(fn).Split('_')[0].Trim())

});

如果要创建该文件夹并添加文件:


foreach (var x in filesAndFolders)

{

    Directory.CreateDirectory(x.Dir); // will only create it if it doesn't exist yet

    string newFileName = Path.Combine(x.Dir, x.File);

    // we don't know the old path of the file so i can't show how to move

}


查看完整回答
反对 回复 2021-12-25
?
哔哔one

TA贡献1854条经验 获得超8个赞

假设你files是一个List<string>包含文件名 (X2_word_date.pdf,...)


files.ForEach(f => {

    var pathName=  f.Split('_').FirstOrDefault();

    if(!string.IsNullOrEmpty(pathName))

    {

        var directoryInfo = DirectoryInfo(Path.Combine(@"C:\PATH", pathName));

        if(!directoryInfo.Exists)

            directoryInfo.Create();


       //Then move this current file to the directory created, by FileInfo and Move method 

    }

})


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 256 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号