方法最后加return "";不过你这样写,就只能返回最后一个被删除文件的FullName

解决方案 »

  1.   

    问题是你想要做什么,删除指定目录及其子目录下文件名为filename的所有文件,并返回被删除文件的完整路径吗
      

  2.   

    这个程序要干什么?foreach(...) { return ...} ?????
    return 语句,无条件退出方法,返回调用法
      

  3.   

    可以加一个
    StringBuilder sb = new StringBuilder();
    然后在你删除方法里加一个
    public string deleteF(DirectoryInfo path, string filename,ref sb)
    {
        //把每个被删掉的文件名字(Name or FullName)与这个sb做个加法运算.
    }
    为什么你的思路一定要限制在返回呢?这样不就可以了么.当然你还可以再做加法运算的时候,为每个文件加个标志,以表明这是一个文件名的开始/结束
      

  4.   

    写了个方法using System.Collections.Generic; List<string> fileNamesList;
    public List<string> delFileNames(string path, string filename)
    {
        if (!Directory.Exists(path))
        {
            MessageBox.Show("路径不存在!", "错误提示", MessageBoxButtons.OK,MessageBoxIcon.Warning);
            return new List<string>();
        }
        FileInfo fi = new FileInfo(path + "\\" + filename);
        if (fi.Exists)
        {
            fileNamesList.Add(fi.FullName);
            fi.Delete();
        }
        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] dis = di.GetDirectories();
        if (dis.Length > 0)
        {
            for (int i = 0; i < dis.Length; i++)
            {
                delFileNames(dis[i].FullName, filename); 
            }
        }
        return fileNamesList;
    }
    调用举例fileNamesList = new List<string>();
    fileNamesList = delFileNames(@"g:\test", "aa.txt");
    foreach (string s in fileNamesList)
    {
        richTextBox2.Text += s + "\n";
    }
      

  5.   

    谢谢各位指教,lxcnn朋友你说的很细我试一下。List<string> 我从来没用过
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;namespace deletefile
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button2_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }        private void button1_Click(object sender, EventArgs e)
            {                       
                if(textBox1.Text==string.Empty)
                {
                    MessageBox.Show("路径不能为空", "提示", MessageBoxButtons.OK);
                    textBox1.Focus();
                }
                else if (textBox2.Text == string.Empty)
                {
                    MessageBox.Show("标志文件不能为空,区分扩展名", "提示", MessageBoxButtons.OK);
                    textBox2.Focus();
                }
                else
                {                
                    
                    fileNamesList = new  List<string>();
                    fileNamesList = deleteF(new System.IO.DirectoryInfo(textBox1.Text), textBox2.Text);
                    foreach (string s in fileNamesList)
                    {                   
                        listBox1.Items.Add("已删:"+s);
                    }
                    
                }
            }
            
            private void textBox2_Enter(object sender, EventArgs e)
            {
                tishi.Text = "区分扩展名";
            }        private void textBox1_Enter(object sender, EventArgs e)
            {
                tishi.Text = "包括它的子目录";
            }        List<string> fileNamesList;
            public List<string> deleteF(DirectoryInfo path, string filename)
            {
                if (System.IO.Directory.Exists(path.FullName))
                {
                    if (path.GetFiles(filename).Length > 0)
                    {
                        System.IO.FileInfo[] f = path.GetFiles();
                        foreach (FileInfo a in f)
                        {
                            a.Delete();
                            fileNamesList.Add(a.FullName);
                        }                }                
                    DirectoryInfo[] paths = path.GetDirectories();
                    foreach (DirectoryInfo e in paths)
                    {
                        deleteF(e, filename);
                    }
                    return fileNamesList;
                }
                else
                {
                    MessageBox.Show("路径不存在!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return new List<string>(); 
                }
            }
           
        }
    }
    解决了。