Domanda

Va bene, sto probabilmente manca qualcosa di veramente semplice qui, ma sono stato a questo per più di un'ora la società e da nessuna parte. :( Ho un progetto C # utilizzando Visual C # di Microsoft 2008 Express Edition. La finestra di dialogo Salva appare, se lo desideri, ma non fa mai il file. Practially parlando, una volta che viene specificato il file, mi piacerebbe l'applicazione per mantenerla con la corrente . i dati in un file di log per il momento, mi piacerebbe solo essere felice, se potessi ottenere la cosa ####### per fare un file vuoto Ecco quello che sono stato in grado di venire in mente finora:.

      private void saveLogAsToolStripMenuItem_Click(object sender, EventArgs e)
      {
         if (DialogResult.OK == saveFileDialog1.ShowDialog())
         {
            // If the file name is not an empty string open it for saving.
            if (saveFileDialog1.FileName != "")
            {
/* This does not work.
               // Saves the Image via a FileStream created by the OpenFile method.
               System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();
               fs.Write((byte)"Success!\r\n", 0, 10);
               fs.Close();
*/
            }
            else
            {
               textBox1.Text += "An invalid filename was specified.\r\n";
            }

         }
      }

Tutti i suggerimenti molto sarebbero apprezzati. Grazie.

È stato utile?

Soluzione

La risposta di Gabriel è corretta, se non che sta usando saveFileDialog1.FileName direttamente, piuttosto che il metodo OpenFile () su SaveFileDialog. Se si desidera che l'applicazione per lavorare in ambienti con attendibilità parziale, allora avete bisogno di utilizzare OpenFile () e accedere direttamente al stread.

questo articolo MSDN per ulteriori informazioni.

Ecco il codice equivalente:

using (var stream = dlg.OpenFile())
using (var writer = new System.IO.StreamWriter(stream))
{
    writer.WriteLine("Success");
}

Altri suggerimenti

Questo funziona:

using (System.IO.TextWriter tw = new System.IO.StreamWriter(saveFileDialog1.FileName))
{
    tw.WriteLine("Success");
}
FileInfo fi = new FileInfo(saveFileDialog1.Filename); 
StreamWriter stm = fi.OpenWrite;
// or
FileStream stm = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top