C# 如何从listView1项(文件)获取文件完整路径?
我的设计器中有这样一个: 右侧是listView1中的文件。 左侧是该文件的目录主目录treeView1 我在“单击事件”菜单条项中有此代码:C# 如何从listView1项(文件)获取文件完整路径?,c#,.net,winforms,C#,.net,Winforms,我的设计器中有这样一个: 右侧是listView1中的文件。 左侧是该文件的目录主目录treeView1 我在“单击事件”菜单条项中有此代码: void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Text == "Upload") { List&
void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "Upload")
{
List<String> selected = new List<String>();
foreach (ListViewItem lvi in listView1.SelectedItems)
{
selected.Add(lvi.Text);
}
AllFiles = selected.ToArray();
Bgw.RunWorkerAsync();
}
}
所有文件都包含文件和路径,例如C:\test.txt
然后:
private void StringArrayUploadFiles(object sender, DoWorkEventArgs e)
{
try
{
foreach (string txf in files)
{
string fn = txf;
BackgroundWorker bw = sender as BackgroundWorker;
if (f.TargetFolder != "" && f.TargetFolder != null)
{
createDirectory(f.TargetFolder);
}
else
{
f.TargetFolder = Path.GetDirectoryName(txf);
//createDirectory(f.TargetFolder);
}
string UploadPath = String.Format("{0}/{1}{2}", f.Host, f.TargetFolder == "" ? "" : f.TargetFolder + "/", Path.GetFileName(fn));
现在以txf为例,我有C:test.txt
那么在f.TargetFolder中我有:C:
在上传路径中,我有:
但是C:我需要它看起来像:
还有一些子目录,例如:
在menuStrip1_ItemClicked事件中,当我选择一个文件(例如test.txt)时,这个事件中已经出现了一个混乱
FileInfo fi = new FileInfo("temp.txt");
确定刚创建的文件的完整路径
DirectoryInfo di = fi.Directory;
找出该目录中还有哪些其他条目
FileSystemInfo[] fsi = di.GetFileSystemInfos();
在控制台中显示directoryinfo全名的步骤
Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);
打印该目录的所有文件和子目录的名称
foreach (FileSystemInfo info in fsi)
Console.WriteLine(info.Name);
将数据与视图分开。您肯定已经知道这些文件所属的文件夹,否则如何填充ListView?在填充ListView时将该路径存储在类级别,并在将它们添加到列表时使用System.IO.path.Combine()将它们重新组合在一起。或者,在创建ListViewItem时,只需将完整路径存储在它的Tag()属性中即可。Likr Idle\u Mind建议将额外的信息放入
ListViewItem.Tag
!最好是整个FileInfo
对象。我不得不在我的问题中添加更多的代码来解释我想要得到什么。当我在listView1上选择一个文件时,我需要获得文件的目录,但只需要名称,例如C:\\so only C,如果目录是dannyistest:\\daniel\\hello,那么它应该是:dannyistest/daniel/hello/test.txt,因为我正在将文件上载到我的ftp服务器,所以目录的格式应该是这样的。以下要点这里提到的人是数据表示可以不同于存储。您应该存储尽可能多的信息来完成您的工作,然后只向用户显示其中的一部分。当程序经过处理阶段时,可以逐步构建“状态”对象。当您更新UI时,您应该有足够的信息来执行下一步。
Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);
foreach (FileSystemInfo info in fsi)
Console.WriteLine(info.Name);