Problem z odtworzeniem pobranej ścieżki

0

Witam
Piszę taki prosty odtwarzacz używając bibliotek windowsmediaplayer mam problem z odtworzeniem pobranej ściezki z pliku. Ścieżkę zapisuję w taki o to sposób:

  public void zapiszDysk(OpenFileDialog open)
        {
           
            string plikNazwa = @"C:/Program Files/Pfdf/ZapisSciezki.txt";
                    StreamWriter sw = new StreamWriter(plikNazwa);
                    string sciezka = open.FileName;
                    sw.WriteLine(string.Format(sciezka));
                    sw.Close();
          
        }
 

Pobieram tą zapisaną ścieżkę i chciałbym aby Od razu odtwarzało mi wskazany plik

      public void odczytajSciezkeDowolna()
       {
           
            string odczytanyZapisDlaDysku = System.IO.File.ReadAllText(@"C:/Program Files/Pfdf/ZapisSciezki.txt");
           OpenFileDialog open = new OpenFileDialog();
        


               open.FileName = odczytanyZapisDlaDysku;
               axWindowsMediaPlayer1.URL = (open.FileName);
               axWindowsMediaPlayer1.Ctlcontrols.play();
           
       }
 

Załóżmy, że ścieżka to "C:\Users\WuWujo\Desktop\idiota.avi"
I nie odtwarza mi tej ścieżki.
Jeśli natomiast wpiszę na sztywno do kodu - to mi wtedy odtwarza:

axWindowsMediaPlayer1.URL = (C:\\Users\\WuWujo\\Desktop\\idiota.avi);
 

Podówjny "\" nie ma tutaj znaczenia raczej bo po wpisaniu do pliku takiej ścieżki "C:\Users\WuWujo\Desktop\idiota.avi" też nie dotwarza.

0

Dodam jeszcze , że działa mi ten mój sposób dla płyt dvd, ale tylko tych które są w napędzie lub też w daemonie jeśli natomiast mam strukturę np. na dysku c to już mi to nie działa oczywiście ścieżkę do pliku zapisuje dobrze, ale już nie potrafi tego odtworzyć.

0

Ma ktoś jakiś pomysł czemu tak jest, bo totalnie nie mam pojęcia... :/ Jakaś podpowiedź - proszę.

0

Czy sprawdziłeś co masz w open.FileName? Upewniłeś się, że tam jest dobra ścieżka?

0

Tak, ścieżka jest prawidłowa, a może jest jakiś inny szybki sposób w jaki mogę to zapisać i później odczytać bo chodzi mi o to, że po ponownym uruchomieniu programu odtwarzała się automatycznie ostatnio wybrana pozycja.

0

hmmm... dziwne t wszystko b w teorii to powinno działać, natomiast w praktyce już jest inaczej. Może ktoś mógłby podpowiedzieć w jaki sposób zapisać ostatnio wybrany plik tak, żeby po wyłączeniu i ponownym włączeniu tego "mojego odtwarzacza" automatycznie odtwarzało ostatnio wskazany plik.

0

Nie znam tej kontrolki, ale raczej ona Ci nie zapamięta ostatnio otwartego pliku. Musisz to oprogramować. Możesz na przykład zapisać ścieżkę do pliku.

0

Przecież zapisuje :) :P


  public void zapiszDysk(OpenFileDialog open)
        {
 
            string plikNazwa = @"C:/Program Files/Pfdf/ZapisSciezki.txt";
                    StreamWriter sw = new StreamWriter(plikNazwa);
                    string sciezka = open.FileName;
                    sw.WriteLine(string.Format(sciezka));
                    sw.Close();
 
        }
 

Później wywołuję w menustrip - open - click

No i chodzi, o to, że mi tej ścieżki odpala.

0

Może dlatego, że zapisujesz WriteLine, a odczytujesz cały text z pliku?
Może na koncu ścieżki dostajesz jeszcze znak nowej linii "\n" albo coś w tym rodzaju.

a) upewnij się że odczytana ścieżka jest poprawna
b) spróbuj zapisać ścieżkę bez końca linii.
c) ewentualnie odczytać upewniając się że odczytujesz pierwszą linijkę pliku bez znaku jej końca.

Przyznam , że strzelam ale może naprowadzi Cię to na jakiś trop.

0

Nhibernate ... hmmm przetestowałem Twoje porady i to jednak nie to ... :/ A może da się to w jakis sposób zserializować ....?? Tą ścieżkę?

0

A najdziwniejsze w tym wszystkim jest to, że jeżeli wybiorę, któryś z napędów "DVD" i wskażę tam plik .IFO - to mi zapisuje i odtwarza poprawnie natomiast jeśli mam tą samą strukturę z tej samej płyty DVD na dysku to mi ścieżkę zapisze, ale już nie odtwarza. :/ i Tak dla jakiego kolwiek innego pliku niż pliki IFO. :/

0

Hmmm... zrobiłem trochę inaczej i działa
wcześniej miałem otwieranie openfiledialog tak

 
                 private void otwórzDOWOLNYToolStripMenuItem_Click(object sender, EventArgs e)
        {

         
               axWindowsMediaPlayer1.URL = null;

            OpenFileDialog open = new OpenFileDialog();
            open.Title = "Open";
            open.Filter = "All Files|*.*";

            try
            {

                if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK) ;
                {
                  
                    axWindowsMediaPlayer1.URL = (open.FileName);
                    axWindowsMediaPlayer1.Ctlcontrols.play();
                    
                    zapiszDysk(open);
                  

                   //--------------------------------------                    

                }
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message.ToString(), "BŁAD", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "BŁAD", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        } 

No, ale nie działało mi odczytaywanie ścieżki podejrzewam, że zapis też nie działał więc zrobiłem tak, że wrzuciłem na formę openfiledialog i zrobiłem funkcję:

string patgSciezkaDowolna;
 

 public void otworzDowony()
            {
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    {
                  
                        pathSciezkaDowolna = openFileDialog1.FileName;

                    }
                    axWindowsMediaPlayer1.URL = pathSciezkaDowolna;  //zapis ścieżki dla dowolnego pliku
                    string plikNazwa = @"C:/Program Files/Pfdf/ZapisSciezkiOpen.txt";
                    StreamWriter sw = new StreamWriter(plikNazwa);
                    
                    sw.WriteLine(pathSciezkaDowolna);

                  
                    sw.Close();
                    zapiszPustyDlaZapisSciezki();
                }

                else
                {
                    // MessageBox.Show("D*PA");
                }
            }
 

I wrzuciłem ją pod MenuStrip i działa tak jak chciałem :)

 
            private void otwórzDOWOLNYToolStripMenuItem_Click(object sender, EventArgs e)
        {
          otworzDowony();

        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1