2011-12-11 17 views
1

アラビア語の書式で書かれたファイルを読み込もうとすると、最後の行だけが...何が問題なのですか?英語以外のファイルを読む

コード:

// Read the file and display it line by line in text box 
System.IO.StreamReader file = 
    new System.IO.StreamReader("arabic.txt", Encoding.UTF8); 
while ((line = file.ReadLine()) != null) 
{ 
    txtfile[count] = line; 
    textBox1.Text = txtfile[count]+Environment.NewLine; 

    count++; 
} 

file.Close(); 
+4

これはファイルの形式とは関係ありません。テキストボックスのテキストは、読み込んだときに各行に置き換えます。 – Foole

+0

また、私はあなたがデータを保存するために使用しているデータ構造を変更することをお勧めします。動的に作成された配列(txtfile)を使用しているようです。代わりに 'ArrayList'などを使用してください。 – Shai

+0

あなたのアドバイスありがとう –

答えて

4

テキストを追加していないので、あなたがあなたのTextBoxにのみ最後の行を参照してください理由はtextBox1.Text += txtfile[count]+Environment.NewLine;

+0

あなたの助言のために非常にマッシュアップありがとう、ありがとう、私はこの些細なエラーを発見した。私は今しようとすると、配列が空のないものを表示するときに私は傾ける? –

2

を試してみてください。

は問題が

textBox1.Text = txtfile[count]+Environment.NewLine 

ある

textBox1.Text += txtfile[count]+Environment.NewLine; 

代わりの

textBox1.Text = txtfile[count]+Environment.NewLine; 
+0

ありがとう、これは仕事です –

0

を使用してみてくださいよ

textBox1.Text += txtfile[count]+Environment.NewLine 
0

を試してみてくださいあなたはこのようにしようとすることができます

System.IO.StreamReader file = 
     new System.IO.StreamReader("arabic.txt", Encoding.UTF8); 
    while ((line = file.ReadLine()) != null) 
    { 
     txtfile[count] = line; 
     textBox1.Text += txtfile[count]+Environment.NewLine; 


     count++; 
    } 

    file.Close(); 
0

あなたのコードでは、テキストボックスに行を追加することはありません。最後の行だけが表示されます。あなたのコードは、そのように変更します。

// Read the file and display it line by line in text box 
System.IO.StreamReader file = new System.IO.StreamReader("arabic.txt", Encoding.UTF8); 
while ((line = file.ReadLine()) != null) 
{ 
    txtfile[count] = line; 
    textBox1.Text += txtfile[count]+Environment.NewLine; 

    count++; 
} 

file.Close(); 
1

あなたは

TextBox1.Text=System.IO.File.ReadAllText("arabic.txt",Encoding.UTF8); 
0

個人的に私はコレクションにファイルを読んだ、試すこと - 例えばリスト<> - 私のテキストボックスに割り当てるのではなく設定する前に、 (TextBoxには表示されていないすべてのもの、つまり最後の行の後ろにあるものすべてが事実上失われます)。

また、StreamReadersを使用する場合は、usingステートメントを使用します。完了したらStreamReader.Close()を呼び出す必要がなくなります。

public List<string> ReadTextFile(string filePath) 
{ 
    var ret = new List<string>(); 

    if (!File.Exists(filePath)) 
     throw new FileNotFoundException(); 

    // Using the "using" directive removes the need of calling StreamReader.Close 
    // when we're done with the object - it closes itself. 
    using (var sr = new StreamReader(filePath, Encoding.UTF8)) 
    { 
     var line; 

     while ((line = sr.ReadLine()) != null) 
      ret.Add(line); 
    } 

    return ret; 
} 

また、配列などのコレクションを使用することもできます。これを使用すると、そのようなあなたのTextBox要素を埋めることができます:

var fileContents = ReadTextFile("arabic.txt"); 

foreach (var s in fileContents) 
    textBox1.Text += string.Format("{0}{1}", s, Environment.NewLine); 

まだFILECONTENTSにテキストファイルのローカルコピーを持ちながら。

+0

おかげさまであなたの助言に感謝します。私はアラビア語のリターを読んで表示できるようにテキストボックスに直接書きます。しかし、私はこのアラビア語のファイルは、ユーザーがテキストボックスに入力する単語についてそれを検索したい。あなたはpalseで私を助けることができますか?私はあなたがFormat( "{0} {1}" ==>それは何ですか? –

+0

)を使用していることに気付きました。String.Formatは、指定された文字列の各書式項目を、対応するオブジェクトの値に相当するテキストで置き換えます。例えば ​​'string。Format( "値:{0}、obj.Value"); '、obj.Valueが10であると仮定すると、出力は' Value:10'になります。 '{0}'は単なるオブジェクト値のワイルドカードであり、メソッドのパラメータで指定されています。 – aevitas

関連する問題