Problem z kopiowaniem plików.

0

Mam w programie folder TempAudio, pliki z tego folderu chce skopiować do innego folderu. Przykładowa zawartość folderu TempAudio w załączniku, treść błędu też.

 private string sciezkaDoFolderuAudioBazy;
 private string sciezkaTempAudio = Application.StartupPath + @"\\TempAudio";
 sciezkaDoFolderuAudioBazy = System.Environment.CurrentDirectory.ToString() + "\\" + cBDzialNagrania.SelectedItem.ToString() + "Audio";
 
 
                   try
                    {
                        string[] listaPlikowDoSkopiowania = Directory.GetFiles(sciezkaTempAudio);
                        foreach (string f in listaPlikowDoSkopiowania)
                        {
                            // Remove path from the file name.
                            string fName = f.Substring(listaPlikowDoSkopiowania.Length + 1);
                            File.Copy(Path.Combine(sciezkaTempAudio, fName), Path.Combine(sciezkaDoFolderuAudioBazy, fName));
                        }
                        labelInfoPostepNagrania.Text = "Zakończono";
                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show("Wystąpił błąd podczas kopiowania plików. " + ex, "Błąd");
                        labelInfoPostepNagrania.Text = "Wystąpił błąd.";
                    }

Jak naprawić ten błąd?

2

Wypatrzyłem błąd

@"\\TempAudio"

Wiesz jak się małpy używa przy stringach? ;)
Powinno być

@"\TempAudio"

albo

"\\TempAudio"
0

Niestety dalej nie działa. Próbowałem tak @"\TempAudio" i w ten drugi sposób też "\TempAudio", ale dalej pojawia się błąd. Treść w załączniku.

private string sciezkaDoFolderuAudioBazy;
private string sciezkaTempAudio = Application.StartupPath + @"\TempAudio";
sciezkaDoFolderuAudioBazy = System.Environment.CurrentDirectory.ToString() + "\\" + cBDzialNagrania.SelectedItem.ToString() + "Audio";
 
          try
                    {
                        string[] listaPlikowDoSkopiowania = Directory.GetFiles(sciezkaTempAudio);
                        foreach (string f in listaPlikowDoSkopiowania)
                        {
                            // Remove path from the file name.
                            string fName = f.Substring(listaPlikowDoSkopiowania.Length + 1);
                            File.Copy(Path.Combine(sciezkaTempAudio, fName), Path.Combine(sciezkaDoFolderuAudioBazy, fName));
                            //File.Move(sciezkaTempAudio, sciezkaDoFolderuAudioBazy);
                        }
                        labelInfoPostepNagrania.Text = "Zakończono";
                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show("Wystąpił błąd podczas kopiowania plików. " + ex, "Błąd");
                        labelInfoPostepNagrania.Text = "Wystąpił błąd.";
                    }
 
0

A teraz ustaw sobie breakpointa na linijce: string[] listaPlikowDoSkopiowania = Directory.GetFiles(sciezkaTempAudio);
A następnie używając magicznego narzędzie Step Into (F11) i kursora myszki, który po najechaniu na daną zmienną wyświetli ci jej zawartość sprawdź:

  • jaka jest faktycznie wpisana ścieżka do zmiennej sciezkaTempAudio?
  • jaka jest ścieżka w każdym f w pętli foreach? (co zwraca Directory.GetFiles()? pełne ścieżki czy same nazwy plików?)
  • i na koniec przeczytaj ten pitolony komunikat:

//który bym przekopiowała, ale dałeś jpga, więc z życzliwości serca przepiszę:
Could not find a part of the path '\documents\visual studio 2010\Projects\ Voc\Voc\bin\Debug\TempAudio\0.wav'

Nawet ci przetłumaczę:
Nie znaleziono części ścieżki '\documents\visual studio 2010\Projects\ Voc\Voc\bin\Debug\TempAudio\0.wav'

Teraz otwórz Mój komputer i zobacz jakiej części ścieżki brakuje. Tzn. którego z wymienionych w tej ścieżce folderu nie ma.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.