如果.txt不存在,如何打开程序?

时间:2014-01-21 19:05:08

标签: c# winforms

我在表单的开头有这个代码,它读取已经存在的文件,并根据它写入的内容设置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)
    {

...

4 个答案:

答案 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();
    };
  }
}