FolderBrowserDialog Problem - Mp3 Dateien bearbeiten und speichern

Dieses Thema FolderBrowserDialog Problem - Mp3 Dateien bearbeiten und speichern im Forum ".NET Technology" wurde erstellt von GUI-Programmer, 21. Feb. 2014.

Thema: FolderBrowserDialog Problem - Mp3 Dateien bearbeiten und speichern Hallo zusammen, ich habe bereits im Forum Allgemeine Java-Themen einen Thread:...

  1. Hallo zusammen,

    ich habe bereits im Forum Allgemeine Java-Themen einen Thread: http://www.java-forum.org/allgemeine-java-themen/158475-mp3-dateien-bearbeiten-speichern.html

    Da ich jedoch unbedingt schnell zum Zeil kommen wollte, habe ich mich mal eine andere Sprache (C#) ausprobiert. Das Bearbeiten und Speichern hat geklappt, allerdings hat sich der FolderBrowserDialog nur beim Ausführen in meiner Entwicklungsumgebung (MS Visual Studio Ultimate 2013) geöffnet und nicht beim Doppelklick auf die im Projektordner erstellte .exe Datei.

    Da ich neu bei C# bin denke ich dass es wohl ein Anfängerproblem sein wird und recht schnell gelöst sein wird. Danke im Vorraus!

    Code (Text):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Runtime.InteropServices;


    namespace Mp3_Editor
    {
        class Application
        {
            //[DllImport("kernel32.dll")]
            //static extern IntPtr GetConsoleWindow();

            //[DllImport("user32.dll")]
            //static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

            //const int SW_HIDE = 0;
            //const int SW_SHOW = 5;


            [STAThread]
            static void Main(string[] args)
            {
                //var handle = GetConsoleWindow();
                //ShowWindow(handle, SW_HIDE);
                new Application();
            }

            public Application()
            {

                try
                {
                    FolderBrowserDialog fbd = new FolderBrowserDialog();

                    fbd.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Music";
                    DialogResult result = fbd.ShowDialog();

                    DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
                    FileInfo[] logFiles = di.GetFiles();

                    DateCompareFileInfo dateCompareFileInfo = new DateCompareFileInfo();

                    Array.Sort(logFiles, dateCompareFileInfo);

                    for (int i = 0; i < logFiles.Length; i++)
                    {
                        TagLib.File fileMp3 = TagLib.File.Create(logFiles[i].FullName);
                        int n = i + 1;
                        fileMp3.Tag.Track = (uint)n;
                        fileMp3.Save();

                        string number;
                        if (n < 10)
                            number = "0" + n;
                        else
                            number = "" + n;
                        File.Move(logFiles[i].FullName, logFiles[i].DirectoryName + "\\" + number + " - " + logFiles[i].Name);

                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();
                }
               
            }
        }
    }

     
    Code (Text):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;

    namespace Mp3_Editor
    {
        class DateCompareFileInfo : IComparer<FileInfo>
        {
            /// <summary>
            /// Compare the last dates of the File infos
            /// </summary>
            /// <param name="fi1">First FileInfo to check</param>
            /// <param name="fi2">Second FileInfo to check</param>
            /// <returns></returns>
            public int Compare(FileInfo fi1, FileInfo fi2)
            {
                int result;
                if (fi2.LastWriteTime == fi1.LastWriteTime)
                {
                    result = 0;
                }
                else if (fi2.LastWriteTime < fi1.LastWriteTime)
                {
                    result = 1;
                }
                else
                {
                    result = -1;
                }

                return result;
            }
        }
    }

     
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*
  3. Problem gelöst!
    Das Problem bestand darin dass ich eine Konsole und keine GUI erzeugt habe.

    Hier das funktionierende Programm:
    Code (Text):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Drawing;
    using System.Runtime.InteropServices;
    using System.Text.RegularExpressions;

    namespace Mp3_Editor
    {
        /// <summary>
        /// Programm zum Nummerieren von Mp3-Dateien in einem Ordner anhand ihres Änderungsdatums.
        /// </summary>
        static class Program
        {
            /// <summary>
            /// Der Haupteinstiegspunkt für die Anwendung.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                // Dialog wird geöffnet um den Ordner auswählen zu können,in welchem sich die bearbeitenden
                // Musikdateien befinden
                FolderBrowserDialog fbd = new FolderBrowserDialog();
                fbd.Description = "Musikverzeichnis auswählen";
                fbd.ShowNewFolderButton = false;
                fbd.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Music";
                DialogResult result = fbd.ShowDialog();

                try
                {
                    // Eintragen der Mp3-Dateien des Ordners in ein Array
                    DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
                    FileInfo[] logFiles = di.GetFiles("*.mp3");

                    // Sortieren der Mp3-Dateien nach deren Änderungsdatum
                    DateCompareFileInfo dateCompareFileInfo = new DateCompareFileInfo();
                    Array.Sort(logFiles, dateCompareFileInfo);

                    // Bearbeiten der jeweiligen Mp3-Datei
                    for (int i = 0; i < logFiles.Length; i++)
                    {
                        // Festlegen der Titelnummer
                        int n = i + 1;
                       
                        // Ermitteln des Interpreten und des Titels
                        Regex regex = new Regex(" - ");
                        string[] substrings = regex.Split(logFiles[i].Name.Replace(".mp3", ""));

                        // Eintragen des Interpreten, Titels und der Titelnummer
                        TagLib.File fileMp3 = TagLib.File.Create(logFiles[i].FullName);
                        if (substrings != null && substrings.Length == 2)
                        {
                            fileMp3.Tag.Performers = new String[] { substrings[0] };
                            fileMp3.Tag.Title = substrings[1];
                        }
                        fileMp3.Tag.Track = (uint) n;
                        fileMp3.Save();

                        // Umbennen der Datei
                        string number;
                        if (n < 10)
                            number = "0" + n;
                        else
                            number = "" + n;
                        File.Move(logFiles[i].FullName, logFiles[i].DirectoryName + "\\" + number + " - " + logFiles[i].Name);

                    }
                }
                catch (Exception ex)
                {
                    // Ausgeben einer Fehlermeldung
                    MessageBox.Show(ex.Message, "Fehler");
                    return;
                }
            }
        }
    }
     
    Code (Text):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;

    namespace Mp3_Editor
    {
        /// <summary>
        /// Klasse zum vergleichen des Änderungsdatums zweier Dateien.
        /// </summary>
        class DateCompareFileInfo : IComparer<FileInfo>
        {
            /// <summary>
            /// Compare the last dates of the File infos
            /// </summary>
            /// <param name="fi1">First FileInfo to check</param>
            /// <param name="fi2">Second FileInfo to check</param>
            /// <returns></returns>
            public int Compare(FileInfo fi1, FileInfo fi2)
            {
                int result;
                if (fi2.LastWriteTime == fi1.LastWriteTime)
                {
                    result = 0;
                }
                else if (fi2.LastWriteTime < fi1.LastWriteTime)
                {
                    result = 1;
                }
                else
                {
                    result = -1;
                }

                return result;
            }
        }
    }
     
     
    Zuletzt bearbeitet: 22. Feb. 2014