2010-08-03 1 views
1

Привет всем, у меня будет некоторое имя файла для сохранения с именем, которое я выбираю. Например, когда я нажимаю кнопку «Сохранить на моей форме», я покажу вариант диалога «Сохранить» и в имени файла этого окна. Я хотел бы иметь собственное имя файла, например, то или иное имя, и когда он нажимает на «Сохранить», я хотел бы сохранить этот файл ...Возможно ли сохранить файл с нужным именем?

ЛЮБОЙ идея ..

на самом деле я написал код, чтобы сохранить свой файл следующим образом

 public bool savePPD(string strPath) 
    { 
     m_flag = true; 
     string FileName = strPath; 
     string m_strDate = DateTime.Now.ToString("MM/dd/yyyy"); 
     m_strDate = m_strDate.Replace("/", ""); 
     strPath += "/PPD_EntryDetailRecord_" + m_strDate + ".txt"; 

     if (File.Exists(strPath)) 
     { 
      int index = 1; 
      FileName += "/PPD_EntryDetailRecord_" + index + "_" + m_strDate + ".txt"; 
      while (File.Exists(FileName)) 
      { 
       string strFilePath; 
       strFilePath = Directory.GetCurrentDirectory(); 
       strFilePath = Directory.GetParent(strFilePath).ToString(); 
       strFilePath = Directory.GetParent(strFilePath).ToString(); 
       strFilePath = strFilePath + "\\ACH\\"; 
       FileName = strFilePath + "/PPD_EntryDetailRecord_" + ++index + "_" + m_strDate + ".txt"; 
      } 
      using (TextWriter tw = new StreamWriter(FileName)) 
      { 
       tw.Write(m_strRecordTypeCode.PadLeft(1, '0')); 
       tw.Write(m_strTransactionCode.PadLeft(2, '0')); 
       tw.Write(m_strRecievingDFIIdentification.PadLeft(9, '0')); 
       //tw.Write(m_strCheckDigit.PadLeft(1, '0')); 
       tw.Write(m_strDFIAccountNumber.PadRight(17, ' ')); 
       tw.Write(m_strAmount.PadLeft(10, '0')); 
       tw.Write(m_strIndividualIdentificationNumber.PadRight(15, ' ')); 
       tw.Write(m_strIndividualName.PadRight(22, ' ')); 
       tw.Write(m_strDiscretionaryData.PadRight(2, ' ')); 
       tw.Write(m_strAddendaRecordIndicator.PadLeft(1, '0')); 
       tw.Write("TTTTBBBBZZZZZZZ"); 
       tw.WriteLine(); 
       //tw.Flush(); 
       tw.Close(); 
       StreamWriter sw = File.AppendText(FileName); 
       string file1 = Directory.GetCurrentDirectory(); 
       file1 = Directory.GetParent(file1).ToString(); 
       file1 = Directory.GetParent(file1).ToString(); 
       file1 = file1 + "\\ACH"; 
       string[] fileEntries = Directory.GetFiles(file1, "TempPPDAddenda.txt"); 
       StreamReader sr = new StreamReader(fileEntries[0]); 
       string s; 
       s = sr.ReadToEnd(); 
       sr.Close(); 
       sw.Write(s); 
       sw.Close(); 
      } 
     } 
     if (!(File.Exists(strPath))) 
     { 
      using (TextWriter tw = new StreamWriter(strPath)) 
      { 
       tw.Write(m_strRecordTypeCode.PadLeft(1, '0')); 
       tw.Write(m_strTransactionCode.PadLeft(2, '0')); 
       tw.Write(m_strRecievingDFIIdentification.PadLeft(9, '0')); 
       tw.Write(m_strDFIAccountNumber.PadRight(17, ' ')); 
       tw.Write(m_strAmount.PadLeft(10, '0')); 
       tw.Write(m_strIndividualIdentificationNumber.PadRight(15, ' ')); 
       tw.Write(m_strIndividualName.PadRight(22, ' ')); 
       tw.Write(m_strDiscretionaryData.PadRight(2, ' ')); 
       tw.Write(m_strAddendaRecordIndicator.PadLeft(1, '0')); 
       tw.Write("TTTTBBBBZZZZZZZ"); 
       tw.WriteLine(); 
       tw.Close(); 
       StreamWriter sw = File.AppendText(strPath); 
       string file1 = Directory.GetCurrentDirectory(); 
       file1 = Directory.GetParent(file1).ToString(); 
       file1 = Directory.GetParent(file1).ToString(); 
       file1 = file1 + "\\ACH"; 
       string[] fileEntries = Directory.GetFiles(file1, "TempPPDAddenda.txt"); 
       StreamReader sr = new StreamReader(fileEntries[0]); 
       string s; 
       s = sr.ReadToEnd(); 
       sr.Close(); 
       sw.Write(s); 
       sw.Close(); 
      } 
     } 
     return m_flag; 
    } 

Но в этом Понте я имею вопрос

  strFilePath = Directory.GetCurrentDirectory(); 
       strFilePath = Directory.GetParent(strFilePath).ToString(); 
       strFilePath = Directory.GetParent(strFilePath).ToString(); 
       strFilePath = strFilePath + "\\ACH\\"; 

согласно моему требованию, я сохраняю в этом конкретном пути. но когда я делаю exe-файл этого и даю некоторую, которую они могут установить непосредственно в C: или в какой-то другой каталог, поэтому, чтобы преодолеть эту проблему, я бы хотел, чтобы пользователь открыл диалог сохранения файла, чтобы он мог сохранить файл, где он требуется.

+0

Вы можете сохранить с именем, которое вы выбрали, если оно уже не используется (у вас есть несколько вариантов управления, в зависимости от контекста). Я не понимаю, какую часть сохранения файла вы не знаете, как это сделать. (Кроме того, размещение кода, который вы до сих пор помогли) – Rox

+0

Rox я добавил свой пример кода, который был сделан до сих пор мной, а также я сказал, что мое требование может помочь мне в получении решения – Dotnet

+0

Вы хотите предложить, чтобы сохранить файл в папке, где установлено приложение? – Rox

ответ

3

Я думаю, что вы ищете класс SaveFileDialog. См. Ссылку для примера.

Если вы хотите установить путь по умолчанию к тому, где пользователь должен сохранить файл, вы можете использовать свойство InitialDirectory. Если вы хотите установить имя файла по умолчанию, вы можете использовать свойство FileName.

Пример

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
saveFileDialog1.FilterIndex = 2; 
saveFileDialog1.RestoreDirectory = true; 
saveFileDialog1.InitialDirectory = Environment.CurrentDirectory; 
saveFileDialog1.FileName = "MyDefaultFileName"; 
+0

Хорошо, я выберу и скажу – Dotnet

+0

Еще один вопрос, на самом деле, я сохраняю и другое имя файла, например Fileheader, BatchHeader и т. Д.Если они существуют, я изменю имя моего файла, я могу по умолчанию установить имя файла, например saveFileDialog1.FileName = "FileHeader"; – Dotnet

+0

@Dorababu: Да, см. Пример, который я задаю для имени файла по умолчанию. – James

0

Да. Это возможно. Пример в приложении на основе форм см. MSDN.

0

Попробуйте это:

string strFilePath = Path.Combine(System.Windows.Forms.Application.StartupPath, "TempPPDAddenda.txt"); 

Application.StartupPath: Получает путь для исполняемого файла, который начал приложения, не включая имя исполняемого файла .

+0

Он получает путь отладки моего приложения. Но я хотел бы, чтобы у пользователя была папка в каталоге, где он установил мое приложение и захотел сохранить все файлы в этой папке. – Dotnet

+0

Вы пытались установить это на другой диск/на вашем компьютере? Он возвращает путь отладки, если вы используете приложение из Visual Studio – Rox

+0

Hey Rox, но в файле класса я не могу получить этот Path.Combine (Application.StartupPath, "") Он поднимает ошибку, поскольку приложение не найдено , – Dotnet

0

Для таких общих целей мы используем общие диалоговые элементы управления в .net. Они получены из System.Windows.Forms.CommonDialog.

SaveFileDialog - это правильный выбор для ваших нужд.