2016-07-04 61 views
-1

我有這樣的代碼,我不知道爲什麼它會彈出此錯誤消息:無效操作異常的文件保存

「無效的操作異常是由用戶代碼未處理的」。

當我按下保存按鈕時出現此錯誤。

該程序的目的是將文本從一個文本框保存在Mytest.txt文件中,然後從該文件保存到文本框1。我非常感謝這裏的幫助。 預先感謝您。

public MainPage() 
    { 
     this.InitializeComponent(); 
    } 

    private void buttonsave_Click(object sender, RoutedEventArgs e) 
    { 
     string path = @"C:\Users\geora\Mytest.txt"; 
     if(!File.Exists(path)) 
     { 
      using (StreamWriter sw = File.CreateText(path)) 
      { 
       sw.WriteLine(textBox.Text); 
      } 
     } 
    } 

    private void buttonshow_Click(object sender, RoutedEventArgs e) 
    { 
     string path = @"C:\Users\geora\Mytest.txt"; 
     using (StreamReader sr = File.OpenText(path)) 
     { 
      string s = ""; 
      s = sr.ReadLine(); 
      textBox1.Text = s; 
     } 
    } 
+1

在這行做了異常發生? –

+2

你的代碼看起來絕對很好(幾乎從msdn的例子中複製),請添加異常的細節(確切的消息和它引發的_where_)。 –

+0

是的。對不起,以前不說。我的錯。該錯誤在第10行提到了代碼:「File.CreateText(path))」。 –

回答

1

已經打開的文件,但沒有關閉的文件。這個可能是問題

StreamReader sr = File.OpenText(path) 

您需要關閉它。使用爲你做這件事(並且把它放置好,這樣它就可以更早地GC'd):

或者在.Net 2中,你可以使用新的文件。靜態成員,那麼你就需要關閉任何東西:

variable = File.ReadAllText(path); 
+0

_saving_引發異常,而不是_reading_。 'File.CreateText()'創建_and打開文件,返回所需的'StreamWriter'。 –

0

附加到你的異常
WPF版本:

private void loadButton_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
    textBox.Text = File.ReadAllText(@"d:\test.txt"); 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show(ex.ToString()); 
    } 
} 

private void saveButton_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
    File.WriteAllText(@"d:\test.txt", textBox.Text); 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show(ex.ToString()); 
    } 
} 

UWP版本:

using System; 
using Windows.Storage; 
using Windows.UI.Popups; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
... 
private async void buttonSave_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
    var storageFolder = ApplicationData.Current.LocalFolder; 
    var sampleFile = await storageFolder.CreateFileAsync("sample.txt", 
     CreationCollisionOption.ReplaceExisting); 
    await FileIO.WriteTextAsync(sampleFile, textBox.Text); 

    var msgbox = new MessageDialog(sampleFile.Path, "Your file is in"); 
    await msgbox.ShowAsync(); 
    } 
    catch (Exception ex) 
    { 
    var msgbox = new MessageDialog(ex.ToString(), "Error"); 
    await msgbox.ShowAsync(); 
    } 
} 

private async void buttonLoad_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
    var storageFolder = ApplicationData.Current.LocalFolder; 
    var sampleFile = await storageFolder.GetFileAsync("sample.txt"); 
    textBox.Text = await FileIO.ReadTextAsync(sampleFile); 
    } 
    catch (Exception ex) 
    { 
    var msgbox = new MessageDialog(ex.ToString(), "Error"); 
    await msgbox.ShowAsync(); 
    } 
} 
+0

因此,屏蔽異常會神奇地解決所有問題? –

+0

不,但它可能會提示在哪裏搜索?本主題的創建者可能會張貼具體的異常消息或自己檢查它。 – prizm1

+0

它在「File.WriteAllText」行中顯示相同的錯誤。此外,錯誤窗口顯示:「其他信息:不應在UI線程上執行同步操作,請考慮將此方法包裝在Task.Run中。」 –