阅读非英语文件

本文关键字:文件 英语 | 更新日期: 2023-09-27 18:17:42

当我尝试读取以阿拉伯语格式编写的文件时,我只得到最后一行…有什么问题吗?

代码:

// 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();

阅读非英语文件

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

你在TextBox中只看到最后一行的原因是你没有添加文本。

尝试使用

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

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

你可以试试,

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

问题是

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

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

你可以这样试试

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(); 

在您的代码中,您没有向文本框添加行,您只是设置它。所以只显示最后一行。像这样修改代码:

// 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(); 

我个人会读取文件到一个集合-例如一个列表<> -之前分配给我的文本框,而不是设置它到文本框后直接阅读(一切未显示在文本框-即。最后一行之后的所有内容实际上都丢失了)。

另外,当使用streamreader时,使用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中仍然有文本文件的本地副本。