如何从listView1项(文件)获取文件的完整路径?

时间:2014-12-14 21:51:37

标签: c# .net winforms

我的设计师有这个:

Explorer

右侧是listView1中的文件。 左侧是此文件treeView1的目录主目录。

我在菜单条项目点击事件中有此代码:

        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();
            }
        }

问题是AllFiles数组中的文件只是文件名,例如:bootmgr或install.exe

但是我需要在所有文件中,每个文件也都有它的完整路径,例如:

  

c:\ bootmgr或c:\ install.exe或c:\ test \ test \ example.txt

我如何向AllFiles添加路径?

我现在试过了:

void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem.Text == "Upload")
            {
                List<String> selected = new List<String>();
                string dir = treeView1.SelectedNode.FullPath;
                foreach (ListViewItem lvi in listView1.SelectedItems)
                {
                    string g = Path.Combine(dir, lvi.Text);
                    selected.Add(g);
                }

                AllFiles = selected.ToArray();
                Bgw.RunWorkerAsync();
            }
        }

在form1中:

private void FtpProgress_DoWork(object sender, DoWorkEventArgs e)
        {
            f = new FtpSettings();
            f.Host = "ftP://ftp.newsxpressmedia.com";
            f.Username = "...";
            f.Password = "...";
            files = TV_LV_Basic.ExplorerTree.AllFiles;
            StringArrayUploadFiles(sender, e);
        }

AllFiles包含文件和路径,例如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:

然后在UploadPath中我有:ftp://ftp.newsxpressmedia.com/C:/eula.1031.txt 但是C:我需要它看起来像:ftp://ftp.newsxpressmedia.com/C/eula.1031.txt

然后有子目录,例如:ftp://ftp.newsxpressmedia.com/C/Sub/Dir/eula.1031.txt

在menuStrip1_ItemClicked事件中,当我选择一个文件,例如test.txt已经在这个事件中,我做了一团糟。

1 个答案:

答案 0 :(得分:1)

FileInfo fi = new FileInfo("temp.txt");

确定刚刚创建的文件的完整路径。

        DirectoryInfo di = fi.Directory;

找出该目录中的其他条目。

 FileSystemInfo[] fsi = di.GetFileSystemInfos();

在控制台

中显示directoryinfo fullname
Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);

打印该目录的所有文件和子目录的名称。

        foreach (FileSystemInfo info in fsi)
            Console.WriteLine(info.Name);

Here