2011-09-25 5 views
0

내가 뭘 하려는지는 매우 간단하지만 시간을 보낸 후 나는 그것을 올바르게 수행하는 방법을 알지 못한다. openfiledialog를 사용하여 텍스트 파일을 열 수 있지만 같은 파일로 다시 저장하지 못했습니다. 또한 파일을 쓰기 전에 사용 중인지 확인하고 볼 수 있기를 바랍니다. 여기 내 코드는 오픈을위한 버튼을 저장파일 저장 openfiledialog (C# 2008)

public void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     //This if statement checks if the user has saved any changes to the list boxes 

     if (MessageBox.Show(
      "Have you saved your work?\nOpening a new file will clear out all list boxes.", 
      "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) 
     { 
      //Clears out the listboxes 
      this.itemListBox.Items.Clear(); 
      this.priceListBox.Items.Clear(); 
      this.qtyListBox.Items.Clear(); 

      //This will open the file dialog windows to allow the user to chose a file 

      OpenFileDialog fileDialog = new OpenFileDialog(); 
      fileDialog.Title = "Harv's Hardware"; 
      fileDialog.InitialDirectory = Directory.GetCurrentDirectory(); 
      //File Filter 
      fileDialog.Filter = "txt files (*.txt)|*.txt"; 
      fileDialog.FilterIndex = 2; 
      fileDialog.RestoreDirectory = true; 
      //This if statement executes is the user hits OK 
      if (fileDialog.ShowDialog() == DialogResult.OK) 
      { 
       //StreamReader readFile = File.OpenText(fileDialog.FileName); 
       currentFile = new StreamWriter(OpenFileDialog.FileName); 
       String inputString = null; 

       while ((inputString = readFile.ReadLine()) != null) 
       { 
        this.itemListBox.Items.Add(inputString); 
        inputString = readFile.ReadLine(); 
        this.priceListBox.Items.Add(inputString); 
        inputString = readFile.ReadLine(); 
        this.qtyListBox.Items.Add(inputString); 
       } 

      } 
     } 

    } 

저장 버튼 //이 닫

및 열려있는 파일

 //Creates a new saveDialog 
     SaveFileDialog saveDialog = new SaveFileDialog(); 
     saveDialog.ShowDialog(); 

     //Listens to the user input 
     StreamWriter writeFile = File.CreateText(saveDialog.FileName); 

     int indexInteger = 0; 

     //Writes the actual File 
     while (indexInteger < priceListBox.Items.Count) 
     { 

      writeFile.WriteLine(itemListBox.Text); 
      writeFile.WriteLine(itemListBox.Text); 
      writeFile.WriteLine(qtyListBox.Text); 
      indexInteger++; 

     } 

    } 

어떤 도움 주셔서 감사합니다!

답변

0

OpenFileDialog 대신 SaveFileDialog를 사용하고 FileStream을 사용하여 파일에 쓸 수 있습니다. 파일이 사용 중이거나하지 않을 경우

은 ..이 내가 무엇을 확인하려면

public bool IsFileInUse(String file) 
{ 
    bool retVal = false; 
    try 
    { 
     using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) 
     { 
      //file is not locked 
     } 
    } 
    catch 
    { 
     retVal = true; 
    } 

    return retVal; 
}