我在表单的开头有这个代码,它读取已经存在的文件,并根据它写入的内容设置4个textBoxes的值。如果尚未创建文件,我该如何处理?任何帮助都将非常感激。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
FileStream file = new FileStream("cenaEnergentov.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(file);
sr.ReadLine();
var textLines = File.ReadAllLines("cenaEnergentov.txt");
foreach (var line in textLines)
{
string[] dataArray = line.Split(';');
textBox1.Text = (dataArray[0]);
textBox2.Text = (dataArray[1]);
textBox3.Text = (dataArray[2]);
textBox4.Text = (dataArray[3]);
}
}
如果uper是假的,我想继续下面的正常脚本开头:
public void trackBar1_Scroll(object sender, EventArgs e)
{
...
答案 0 :(得分:2)
使用简单的if语句
// I edit this line according to your comment
if(File.Exists(String.Concat("cenaEnergentov".ToUpper(), ".txt"))
{
// do your job
}
else
{
// call appropriate method
trackBar1_Scroll(this,EventArgs.Empty); // for example
}
答案 1 :(得分:0)
在打开文件之前尝试此操作:
var filename = "filename.txt";
if (!File.Exists(filename))
{
File.Create(filename);
}
这不会说明您在不检查它们是否存在的情况下分配值这一事实。实施这一点也是相对微不足道的。
FileStream和StreamReader似乎也是多余的。只需使用File.ReadAllLines。
答案 2 :(得分:0)
试试这个
if(File.Exists("yourFile.txt"))
{
//do what you do
}
else
{
// call appropriate method
}
答案 3 :(得分:0)
之前的解决方案可以正常运行......但是他们并没有真正回答这个大问题:
我如何知道何时继续?
最好的方法是使用FileSystemWatcher
:
var watcher = new FileSystemWatcher(path, ".txt");
watcher.Created += (sender, e) =>
{
if (e.ChangeType == WatcherChangeTypes.Created)
initForm();
};
initForm()
的位置:
void initForm()
{
if(File.Exists(path))
{
// Update form
}
else
{
var watcher = new FileSystemWatcher(path, ".txt");
watcher.Created += (sender, e) =>
{
if (e.ChangeType == WatcherChangeTypes.Created)
initForm();
};
}
}