所以我想要这样的东西:
ITEM1
ITEM2
但我明白了:
ITEM1ITEM2
请帮忙!
我目前的代码:
TextWriter txt = new StreamWriter("IP.txt");
foreach (var item in listBox1.Items)
{
txt.WriteLine("\n" + item.ToString());
txt.Close();
}
listBox1.Items.Clear();
TextReader reader = new StreamReader("IP.txt");
listBox1.Items.Add("\n" + reader.ReadToEnd());
reader.Close();
答案 0 :(得分:1)
使用Environment.NewLine
代替"\n"
:
TextWriter txt = new StreamWriter("IP.txt");
foreach (var item in listBox1.Items)
{
txt.WriteLine(Environment.NewLine + item.ToString());
txt.Close();
}
listBox1.Items.Clear();
TextReader reader = new StreamReader("IP.txt");
listBox1.Items.Add(Environment.NewLine + reader.ReadToEnd());
reader.Close();
答案 1 :(得分:1)
摆脱读者/作者但使用File
让.Net为你解决任务:
写入档案:
File.WriteAllLines("IP.txt", listBox1
.Items
.OfType<Object>()
.Select(item => item.ToString()));
从文件中读取:
listBox1.Items.Clear();
listBox1.Items.AddRange(File.ReadAllLines("IP.txt"));
答案 2 :(得分:1)
见下面的代码。你原来有几个错误:
您在用于将列表框项目写入文本文件的循环中关闭txt
。
您不需要\n
中的txt.WriteLine("\n" + item.ToString());
。 WriteLine
提供换行符
您需要一个循环来读取文本文件并将每行重新添加回列表框
我建议您使用using
来确保文件已关闭,如果程序因某种原因崩溃,则会处理对象
注意:我在添加回列表框的文本中添加了" text from file"
,以证明列表框是从文本文件加载的
listBox1.Items.Add("Item1");
listBox1.Items.Add("Item2");
using (TextWriter txt = new StreamWriter("IP.txt"))
{
foreach (var item in listBox1.Items)
{
txt.WriteLine(item.ToString());
}
}
listBox1.Items.Clear();
using (StreamReader inputFile = File.OpenText("IP.txt"))
{
while (!inputFile.EndOfStream)
{
listBox1.Items.Add(inputFile.ReadLine() + " text from file");
}
}
答案 3 :(得分:0)
ReadToEnd()读取当前位置到文本阅读器末尾的所有字符,并将它们作为一个字符串返回。而是使用它:
string[] lines = File.ReadAllLines("IP.txt");
这将包含您的所有行。您现在可以迭代数组并创建列表框项。