2016-04-10 52 views
-1

Ich schreibe eine C# WinForms App mit DirectX.AudioVideoPlayback (DirectX v9.0c). Ich öffne eine Audiodatei aus einer Binärdatei, konvertiere sie in eine Base64-Zeichenkette, zeichne sie in ein Byte-Array und schreibe sie in eine temporäre Datei auf der Festplatte. Ich habe ein eigenartiges Problem beim zweiten Öffnen einer Datei aus einer temporären Datei.C# Zugriff auf Pfad verweigert

Hier ist der Code:

private void OpenBinaryFile() 
    { 
     OpenFileDialog ofd = new OpenFileDialog(); 
     ofd.Title = "Open Binary File..."; 
     ofd.Multiselect = false; 
     ofd.Filter = "Binary File|*.bin"; 
     if (DialogResult.OK == ofd.ShowDialog()) 
     { 
      glbstrFilePath = ofd.FileName; 

      // Read Base64 string from binary file... 
      FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read); 
      BinaryReader br = new BinaryReader(fs); 
      strFileType = br.ReadString(); 
      String strAudioString = br.ReadString(); 
      fs.Close(); 
      br.Close(); 

      // Convert byte[] to audio... 
      byte[] AudioInBytes = Convert.FromBase64String(strAudioString); 
      File.WriteAllBytes(@"C:\MyTemp\thisaudio", AudioInBytes); 
      audio = Audio.FromFile(@"C:\MyTemp\thisaudio", false); 
      File.SetAttributes(@"C:\\MyTemp\\thisaudio", FileAttributes.Normal); 
      File.Delete(@"C:\MyTemp\thisaudio"); 
     } 

Wenn ich eine Datei öffnen, sobald Sie den obigen Code verwenden, wird die Datei geöffnet, konvertiert und Lasten ohne ein Problem. Wenn ich versuche, wieder eine Datei zu laden, den obigen Code verwenden, bekomme ich diese:

„System.UnauthorizedAccessException unhandled HResult = -2147024891 Message = Zugriff auf den Pfad 'C: \ MyTemp \ thisaudio' wurde verweigert Quelle = mscorlib "

Also, wie kann ich diese App vorbereiten, um eine Datei jedes Mal ohne Absturz zu öffnen? Ich habe versucht, die Attribute der Datei auf "Normal" einzustellen und VS 2015 als Administrator auszuführen, funktioniert aber nicht. Ich habe gegooglet "Zugriff auf Pfad verweigert C# WinForms DirectX.AudioVideoPlayback" und keine der Suchergebnisse, einschließlich der hier auf StackOverflow gepostet, haben eine Lösung, die für mich funktioniert. Außerdem stelle ich auf Anfrage die vollständige Stapelverfolgung zur Verfügung.

+0

mit verwenden müssen Haben Sie versucht, Visual Studio als Administrator ausgeführt werden? – m1o2

+2

Haben Sie den Lesestrom beseitigt? – BanksySan

+0

Schließen Sie Ihren Binär-Reader vor Ihrem Datei-Stream –

Antwort

Verwandte Themen