我一直试图找出一种方法让程序从路径或zip文件中读取所有文件作为输入。比读取输入文件夹中的所有文件名并将其拆分,以便我可以获得诸如产品ID和芯片名称之类的信息。然后将pdf文件存储在与产品ID和芯片名称匹配的正确数据库中。
产品ID为KHSA1234C,芯片名称为LK454154。
示例文件名:N3405-H-KAD_K-KHSA1234C-542164143_LK454154_GFK.pdf
public void btnUploadAttach_Click(object sender, EventArgs e)
{
string fName = this.FileUploadCFC.FileName;
string path = @"C:\mydir\";
string result;
result = Path.GetFileNameWithoutExtension(fName);
Console.WriteLine("GetFileNameWithoutExtension('{0}') return '{1}'",
fName, result);
result = Path.GetFileName(path);
Console.WriteLine("GetFileName('{0}') return '{1}'", path, result);
string[] sSplitFileName = fName.ToUpper().Split("-".ToCharArray());
foreach (char file in fName)
{
try
{
result = sSplitFileName[0] + "_" + sSplitFileName[1] + "-" +
sSplitFileName[2] + "_" + sSplitFileName[3] + "_" +
sSplitFileName[4] + "_" + sSplitFileName[5] + "_" +
sSplitFileName[6];
}
catch
{
return;
}
}
}
我不知道我是否走在正确的轨道上。 有人能帮我吗?谢谢。
答案 0 :(得分:0)
首先,为了读取文件夹中的所有文件,您应该使用Directory.GetFiles,然后您将遍历此文件夹的文件。然后你拆分文件名..在这里你去..
using System.IO;
..
..
..
static void Main(string[] args)
{
string[] filePaths = Directory.GetFiles(@"c:\", "*.pdf");
string result;
foreach (var file in filePaths)
{
result = Path.GetFileNameWithoutExtension(file);
Console.WriteLine("GetFileNameWithoutExtension('{0}') return '{1}'",
file, result);
var sSplitFileName = file.ToUpper().Split('-');
var i = 0;
foreach (var item in sSplitFileName)
{
if (i == 3)
//it is product id
if (i == 7)
//it is chip name
i++;
}
}
}
答案 1 :(得分:0)
作出肯定的陈述:你走在正确的轨道上 - 但还没有: - )
首先,您需要从路径中读取文件,但目前不会这样做。
Directory.GetFiles()
可能是要搜索的内容。这将返回一个文件名列表string[]
数组。
您需要迭代文件并应用拆分,这在我的代码中对我来说没问题。 当您拥有文件的各个部分时,您需要决定要使用的数据库。将文件名拆分为您自己的文件名类可能是明智的,它会公开文件名的每个部分的属性,但这不是必需的。
接下来你需要正确编写db编程,有很多关于如何执行此操作的示例。祝你好运: - )
答案 2 :(得分:0)
假设文件都遵循相同的模式,你可以将所有的分隔符' - '和'_'分开。
class Program
{
static void Main(string[] args)
{
string[] files = Directory.GetFiles(@"C:\mydir\", "*.pdf");
foreach (var file in files)
{
var fileName = Path.GetFileNameWithoutExtension(file);
var tokens = fileName.Split('-', '_');
for(int i=0;i<tokens.Length;i++)
{
string token = tokens[i];
Console.WriteLine("{0}-{1}", i, token);
}
Console.WriteLine();
}
Console.ReadLine();
}
}