none
想看到所有檔案的大小和內容 RRS feed

  • 問題


  •             txtResult.Clear();
                StringBuilder sb = new StringBuilder();
                if (fileCombobox.SelectedIndex != -1)
                {
                    string theFile = fileCombobox.SelectedItem.ToString();
                    if (File.Exists(theFile))
                    {
                        FileInfo myFileInfo = new FileInfo(theFile);

                        sb.AppendLine("檔案名稱:" + myFileInfo.FullName);
                        sb.AppendLine("副檔名:" + myFileInfo.Extension);
                        sb.AppendLine("檔案的大小:" + myFileInfo.Length.ToString() + "位元組");
                        sb.AppendLine("檔案的完整路徑:" + myFileInfo.FullName);
                        sb.AppendLine("所在目錄:" + myFileInfo.Directory);
                        sb.AppendLine("檔案屬性:" + myFileInfo.Attributes.ToString());
                        sb.AppendLine("檔案的建立時間" + myFileInfo.CreationTime.ToString());
                        sb.AppendLine("檔案的上一次存取時間:" + myFileInfo.LastAccessTime.ToString());
                        sb.AppendLine("檔案的上一次寫入時間" + myFileInfo.LastWriteTime.ToString());
                    }
                    else
                    {
                        sb.Append("檔案不存在");
                    }
                    txtResult.Text = sb.ToString();
    這是我在某一個程式片段所看到,若想改成每一個檔案都能看到,且能看到檔案大小該如何改
    是屬於檔案io與資料存取祕訣vsc#2005的第一章第19個範例,因為寫出來的程式只能看一個而已
    2008年3月20日 下午 01:48

解答

  • 不太懂你要幹啥... 所以寫成選完磁碟或選完目錄列出該目錄下所有檔案資訊...

    using System;
    using System.IO;
    using System.Text;
    using System.Windows.Forms;
     
    namespace readdir
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                diskcombo.Items.AddRange(Directory.GetLogicalDrives());
            }
     
            private void diskSelectChanged(object sender, EventArgs e)
            {
                directorycombobox.DataSource = null;
                if (diskcombo.SelectedIndex != -1)
                {
                    try
                    {
                        string[] subdirectoryEntries = Directory.GetDirectories((string) diskcombo.SelectedItem);
                        directorycombobox.DataSource = subdirectoryEntries;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                directorycombobox.SelectedIndex = -1;
            }
     
            private void directorySelectedChanged(object sender, EventArgs e)
            {
                if (directorycombobox.SelectedIndex != -1)
                {
                    try
                    {
                        ListAllFiles(directorycombobox.SelectedItem.ToString());
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
     
            private void ListAllFiles(string directoryPath)
            {
                StringBuilder sb = new StringBuilder();
                DirectoryInfo di = new DirectoryInfo(directoryPath);
                foreach (FileInfo fi in di.GetFiles("*.*"))
                {
                    string theFile = fi.FullName;
                    if (File.Exists(theFile))
                    {
                        FileInfo myFileInfo = new FileInfo(theFile);
                        sb.AppendLine("檔案名稱:" + myFileInfo.FullName);
                        sb.AppendLine("副檔名:" + myFileInfo.Extension);
                        sb.AppendLine("檔案的大小:" + myFileInfo.Length + "位元組");
                        sb.AppendLine("檔案的完整路徑:" + myFileInfo.FullName);
                        sb.AppendLine("所在目錄:" + myFileInfo.Directory);
                        sb.AppendLine("檔案屬性:" + myFileInfo.Attributes);
                        sb.AppendLine("檔案的建立時間" + myFileInfo.CreationTime);
                        sb.AppendLine("檔案的上一次存取時間:" + myFileInfo.LastAccessTime);
                        sb.AppendLine("檔案的上一次寫入時間" + myFileInfo.LastWriteTime);
                        sb.AppendLine("========================================");
                    }
                }
                txtResult.Text = sb.ToString();
            }
     
            private void btnCreateFile(object sender, EventArgs e)
            {
                string myTextFilePath = @"c:\test.txt";
                FileInfo fileInfo = new FileInfo(myTextFilePath);
                StreamWriter sw = fileInfo.CreateText();
                sw.Write(txtResult.Text + "\r\n");
                sw.Flush();
                MessageBox.Show("已寫入" + txtResult.Text);
            }
        }
    }

    2008年3月22日 上午 06:25

所有回覆

  • HI,

     

    您可以這樣做:

     

    DirectoryInfo di=new DirectoryInfo(目錄名稱);

    foreach (FileInfo fi in di.GetFiles("*.*))

    {

        將fi.FullName中的檔案名稱交給您原來的程式處理即可

    }

     

    tihs

    2008年3月20日 下午 02:57
  • 我想問以上的程式碼,應放在那裡,謝謝

    2008年3月22日 上午 03:24
  • 程式碼放在哪邊就要問你自己了...例如某個 Button 按下按鈕後

    private void button1_Click(object sender, EventArgs e)
    {
        DirectoryInfo di = new DirectoryInfo(@"C:\TMP");
     
        foreach (FileInfo fi in di.GetFiles("*.*"))
        {
            StringBuilder sb = new StringBuilder();
            string theFile = fi.FullName;
            if (File.Exists(theFile))
            {
                FileInfo myFileInfo = new FileInfo(theFile);
     
                sb.AppendLine("檔案名稱:" + myFileInfo.FullName);
                sb.AppendLine("副檔名:" + myFileInfo.Extension);
                sb.AppendLine("檔案的大小:" + myFileInfo.Length.ToString() + "位元組");
                sb.AppendLine("檔案的完整路徑:" + myFileInfo.FullName);
                sb.AppendLine("所在目錄:" + myFileInfo.Directory);
                sb.AppendLine("檔案屬性:" + myFileInfo.Attributes.ToString());
                sb.AppendLine("檔案的建立時間" + myFileInfo.CreationTime.ToString());
                sb.AppendLine("檔案的上一次存取時間:" + myFileInfo.LastAccessTime.ToString());
                sb.AppendLine("檔案的上一次寫入時間" + myFileInfo.LastWriteTime.ToString());
            }
            MessageBox.Show(sb.ToString());
        }
    }

    2008年3月22日 上午 03:56
  •  

    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 readdir
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
               diskcombo.Items.AddRange(Directory.GetLogicalDrives());
            }

            private void diskSelectChanged(object sender, EventArgs e)
            {
                directorycombobox.DataSource = null;
                fileCombobox.DataSource = null;
                if(diskcombo.SelectedIndex != -1)
                {
                    try
                    {
                        string[] subdirectoryEntries = Directory.GetDirectories((string)diskcombo.SelectedItem);
                        directorycombobox.DataSource = subdirectoryEntries;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                     
                    }

                }

            }

            private void directorySelectedChanged(object sender, EventArgs e)
            {
                fileCombobox.DataSource = null;
                if (directorycombobox.SelectedIndex != -1)
                {
                    try
                    {
                        string[] subfileEntries =
                        Directory.GetFiles((string)directorycombobox.SelectedItem);
                        fileCombobox.DataSource = subfileEntries;
                    }
                    catch(Exception ex)
                    {
                      MessageBox.Show(ex.Message);
                      

                    }
                }
            }

            private void fileSelectedChanged(object sender, EventArgs e)
            {
                txtResult.Clear();
                StringBuilder sb = new StringBuilder();
                if (fileCombobox.SelectedIndex != -1)
                {
                    string theFile = fileCombobox.SelectedItem.ToString();
                    if (File.Exists(theFile))
                    {
                        FileInfo myFileInfo = new FileInfo(theFile);

                        sb.AppendLine("檔案名稱:" + myFileInfo.FullName);
                        sb.AppendLine("副檔名:" + myFileInfo.Extension);
                        sb.AppendLine("檔案的大小:" + myFileInfo.Length.ToString() + "位元組");
                        sb.AppendLine("檔案的完整路徑:" + myFileInfo.FullName);
                        sb.AppendLine("所在目錄:" + myFileInfo.Directory);
                        sb.AppendLine("檔案屬性:" + myFileInfo.Attributes.ToString());
                        sb.AppendLine("檔案的建立時間" + myFileInfo.CreationTime.ToString());
                        sb.AppendLine("檔案的上一次存取時間:" + myFileInfo.LastAccessTime.ToString());
                        sb.AppendLine("檔案的上一次寫入時間" + myFileInfo.LastWriteTime.ToString());
                    }
                        
                       
                   
                    else
                    {
                        sb.Append("檔案不存在");
                    }
                    txtResult.Text = sb.ToString();

                }

            }

            private void btnCreateFile(object sender, EventArgs e)
            {
                string myTextFilePath = @"c:\test.txt";
                FileInfo fileInfo = new FileInfo(myTextFilePath);
                StreamWriter sw = fileInfo.CreateText();
                sw.Write(txtResult.Text + "\r\n");
                sw.Flush();
                MessageBox.Show("已寫入" + txtResult.Text);

              

            }
           
        }
    }

    這是我的程式碼,因為我還是要請諸位前輩幫我看一下要加在那裡,我設法再用別的方法寫寫看,如果要測試的話,請記得在旁邊的參考加上visual basic的參考,否則是不能執行的

    2008年3月22日 上午 04:55
  • 不太懂你要幹啥... 所以寫成選完磁碟或選完目錄列出該目錄下所有檔案資訊...

    using System;
    using System.IO;
    using System.Text;
    using System.Windows.Forms;
     
    namespace readdir
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                diskcombo.Items.AddRange(Directory.GetLogicalDrives());
            }
     
            private void diskSelectChanged(object sender, EventArgs e)
            {
                directorycombobox.DataSource = null;
                if (diskcombo.SelectedIndex != -1)
                {
                    try
                    {
                        string[] subdirectoryEntries = Directory.GetDirectories((string) diskcombo.SelectedItem);
                        directorycombobox.DataSource = subdirectoryEntries;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                directorycombobox.SelectedIndex = -1;
            }
     
            private void directorySelectedChanged(object sender, EventArgs e)
            {
                if (directorycombobox.SelectedIndex != -1)
                {
                    try
                    {
                        ListAllFiles(directorycombobox.SelectedItem.ToString());
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
     
            private void ListAllFiles(string directoryPath)
            {
                StringBuilder sb = new StringBuilder();
                DirectoryInfo di = new DirectoryInfo(directoryPath);
                foreach (FileInfo fi in di.GetFiles("*.*"))
                {
                    string theFile = fi.FullName;
                    if (File.Exists(theFile))
                    {
                        FileInfo myFileInfo = new FileInfo(theFile);
                        sb.AppendLine("檔案名稱:" + myFileInfo.FullName);
                        sb.AppendLine("副檔名:" + myFileInfo.Extension);
                        sb.AppendLine("檔案的大小:" + myFileInfo.Length + "位元組");
                        sb.AppendLine("檔案的完整路徑:" + myFileInfo.FullName);
                        sb.AppendLine("所在目錄:" + myFileInfo.Directory);
                        sb.AppendLine("檔案屬性:" + myFileInfo.Attributes);
                        sb.AppendLine("檔案的建立時間" + myFileInfo.CreationTime);
                        sb.AppendLine("檔案的上一次存取時間:" + myFileInfo.LastAccessTime);
                        sb.AppendLine("檔案的上一次寫入時間" + myFileInfo.LastWriteTime);
                        sb.AppendLine("========================================");
                    }
                }
                txtResult.Text = sb.ToString();
            }
     
            private void btnCreateFile(object sender, EventArgs e)
            {
                string myTextFilePath = @"c:\test.txt";
                FileInfo fileInfo = new FileInfo(myTextFilePath);
                StreamWriter sw = fileInfo.CreateText();
                sw.Write(txtResult.Text + "\r\n");
                sw.Flush();
                MessageBox.Show("已寫入" + txtResult.Text);
            }
        }
    }

    2008年3月22日 上午 06:25