阅读非英语文件
本文关键字:文件 英语 | 更新日期: 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中仍然有文本文件的本地副本。