我需要修剪目录路径,以便文件仅显示在TextBox
中。我不断收到超出范围的错误。
这是我的代码:
string startPath = "";
string results = "";
string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");
startPath = filePaths.ToString();
results = startPath.Substring(28);
TboxLeftTable.Text = results;
我要修剪的路径是:C:\TwinTable\LeftTableO0201\3100200210.TA4
答案 0 :(得分:2)
只需使用此:
string startPath = "";
string results = "";
string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");
if (filePaths.Length > 0)
TboxLeftTable.Text = System.IO.Path.GetFileName(filePaths[0]);
答案 1 :(得分:2)
首先,这是不正确的:
startPath = filePaths.ToString();
因为您有一个数组。 相反,您应该遍历数组元素。 您的代码应如下所示:
string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");
foreach (string startPath in filePaths)
{
result = Path.GetFileName(startPath);
TboxLeftTable.Text += result;
}
答案 2 :(得分:1)
在数组上调用ToString
会导致System.String[]
(demo),在这种情况下28
的索引超出范围(返回的字符串只有15个字符)。
可能您希望具有修剪后的值数组,在这种情况下,您应该使用LINQ例如:
filePaths.Select(s => s.Substring(28)).ToArray();
或者,如果只想使用数组的单个条目,则应该使用:
startPath = filePaths[0]; //or whatever element you want to use
答案 3 :(得分:0)
这可用于将目录中的文件名获取到一个数组(文件名):
var directory = @"C:\TwinTable\LeftTableO0201";
var fileNames = Directory.EnumerateFiles(directory).Select(Path.GetFileName).ToArray();
这可能用于设置Text
对象的TboxLeftTable
属性,也许:
TboxLeftTable.Text = fileNames.First();