C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: テキストボックスに保存


(過去ログ 30 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■14411 / inTopicNo.1)  テキストボックスに保存
  
□投稿者/ sugi (1回)-(2008/02/17(Sun) 23:02:46)

分類:[C#] 

初めまして。無理を承知して書き込みます。
現在RSSリーダーを作成していまして、問題が生じ解決できないので書き込みます。
コードをすべて書いたのですが、初心者が書いたので相当長くなってしまっているので
相当見にくくなっているので、答えるのは難しいと思いますが、わかる方いらっしゃいましたら
お願いします。

まず簡単に説明します。
form1をロードしたら、listbox2の単語とlistbox1の記事をchasenにかけて、
単語と記事が一致したら、その記事をテキストボックスに保存しようとしています。
前半部分はそのサービスを記述しています。
後半部分にテキストボックスに保存しようとしています。
そこで、記事がすでにテキストボックスにあるのなら記事を保存しない。
記事がテキストボックスにないのなら保存しようとしています。
しかし、最後の部分の
else if(arunoka == false)
{
                          StreamWriter writetext = new StreamWriter(path, true,                                    Encoding.GetEncoding("Shift_JIS"));
           writetext.WriteLine(listBox1.SelectedItems[k]);
           writetext.Close();
   MessageBox.Show("記事を新たに保存しました。");
 
}
の部分でコンパイルを通るのですが、保存の実行になるとエラー表示見たいのが出て、
「ハンドルされませんでした。別のプロセスで使用されているため、プロセスはファイル 'F:\RSS\中国.txt' にアクセスできません。」
となってしまいます。

何が問題なんでしょうか?
わかるかたいっらしゃいましたらお願いします。
そして稚拙な文章と、無理な質問をして申し訳ありません。





private void Form1_Load(object sender, EventArgs e)
{

foreach
(string fname in Directory.GetFiles("F:\\Rss"))
{
string filename = Path.GetFileNameWithoutExtension(fname);
listBox2.Items.Add(filename); //listbox2に登録ワードを表示する。
}

string url = textBox1.Text;
RssFeed feed = RssFeed.Read(url);             
RssChannel channel = (RssChannel)feed.Channels[0];
RssItem item = (RssItem)listBox1.SelectedItem;
listBox1.DataSource = channel.Items;
dataGridView1.DataSource = channel.Items;
linkLabel1.Text = channel.Title;


int k, l;
int oo, pp;
oo = listBox1.Items.Count;
pp = listBox2.Items.Count;

for (k = 0; k <= oo - 1; k++)
{
listBox1.SelectedIndex = k;
}
for (l = 0; l <= pp - 1; l++)
{
listBox2.SelectedIndex = l;
}
string[] param = { "-F%m\t%H\n" };
ChasenCS.setParams(param);                  //chasenを動作する
for (k = 0; k < listBox1.SelectedItems.Count; k++)
{
for (l = 0; l < listBox2.SelectedItems.Count; l++)
{
article = ChasenCS.parseStr(listBox1.SelectedItems[k].ToString());
word = ChasenCS.parseStr(listBox2.SelectedItems[l].ToString());
int i, j, No1, No2;
string[] Arrayarticle = article.Split('\n');
string[] Arrayword = word.Split('\n');                  // 改行区切りで分割して配列に格納する
No1 = Arrayword.Length;
No2 = Arrayarticle.Length;
for (i = 0; i < No1 - 2; i++)
for (j = 0; j < No2 - 2; j++)
{
if (Arrayword[i] == Arrayarticle[j])
{
listBox1.SelectedIndex = k;
listBox2.SelectedIndex = l;
string word0 = listBox2.SelectedItems[l].ToString();
string path = "F:\\RSS\\" + word0 + ".txt";
string kiji = listBox1.SelectedItems[k].ToString();
MessageBox.Show(kiji, "保存候補記事"); //保存記事がファイルにあるかないかを確認、あるなら保存しない、ないなら保存。
MessageBox.Show(path, "ファイル名");

StreamReader textFile;
string line;
int z;
textFile = new StreamReader(path, Encoding.Default);
line = textFile.ReadToEnd();
string[] Arrayline = line.Split('\n'); //textfileの中身を改行ごとに配列にいれる。

for (z = 0; z < Arrayline.Length ; z++)
{
MessageBox.Show(Arrayline[z], "ファイルの中身の1行");
bool onaji = kiji.Equals(Arrayline[z]);
if ( onaji == true)
{
MessageBox.Show("記事がかぶりました。");
}
else if( onaji == false)
{
bool arunoka;
arunoka = line.Contains(kiji);
if (arunoka == true)
{
MessageBox.Show("すでにありました。");
}
else if(arunoka == false)
{
                          StreamWriter writetext = new StreamWriter(path, true, Encoding.GetEncoding("Shift_JIS"));
           writetext.WriteLine(listBox1.SelectedItems[k]);
           writetext.Close();
   MessageBox.Show("記事を新たに保存しました。");
 
}
}
}

}
else
{
}

}
}
}
}

引用返信 編集キー/
■14412 / inTopicNo.2)  Re[1]: テキストボックスに保存
□投稿者/ Hongliang (240回)-(2008/02/18(Mon) 00:30:30)
Hongliang さんの Web サイト
// コード中にテキストボックスが見当たりませんが……。
StreamReader を Close してないからでしょう。
引用返信 編集キー/
■14415 / inTopicNo.3)  Re[2]: テキストボックスに保存
□投稿者/ sugi (2回)-(2008/02/18(Mon) 01:41:52)
No14412 (Hongliang さん) に返信
> // コード中にテキストボックスが見当たりませんが……。
> StreamReader を Close してないからでしょう。


ありがとうございます。
こんなに簡単なことだったんですね。
おかげで何時間も悩んだ問題が解決しました。
ちなみにテキストボックスはプロパティの方で設定してありました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -