2017-02-09 99 views
0

所以,我试图创建一个特定路径的文件,但我的代码不允许我创建文件夹。如果C#中不存在,自动创建文件夹

这是我的代码:

public void LogFiles() 
{ 
    string data = string.Format("LogCarga-{0:yyyy-MM-dd_hh-mm-ss}.txt", DateTime.Now); 
    for (int linhas = 0; linhas < dataGridView1.Rows.Count; linhas++) 
    { 
     if (dataGridView1.Rows[linhas].Cells[8].Value.ToString().Trim() != "M") 
     { 
      var pathWithEnv = @"%USERPROFILE%\AppData\Local\Cargas - Amostras\_logs\"; 
      var filePath = Environment.ExpandEnvironmentVariables(pathWithEnv); 
      using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) 
      { 
       using (StreamWriter writer = File.AppendText(filePath + data)) 
       { 
        string carga = dataGridView1.Rows[linhas].Cells[0].Value.ToString(); 
        string referencia = dataGridView1.Rows[linhas].Cells[1].Value.ToString(); 
        string quantidade = dataGridView1.Rows[linhas].Cells[2].Value.ToString(); 
        string dataemissao = dataGridView1.Rows[linhas].Cells[3].Value.ToString(); 
        string linha = dataGridView1.Rows[linhas].Cells[4].Value.ToString(); 
        string marca = dataGridView1.Rows[linhas].Cells[5].Value.ToString().Trim(); 
        string descricaoweb = dataGridView1.Rows[linhas].Cells[6].Value.ToString().Trim(); 
        string codprod = dataGridView1.Rows[linhas].Cells[7].Value.ToString().Trim(); 
        string tipoemb = dataGridView1.Rows[linhas].Cells[8].Value.ToString().Trim(); 
        string nomepc = System.Environment.MachineName; 
        writer.WriteLine(carga + ", " + referencia + ", " + quantidade + ", " + dataemissao + ", " + linha + ", " + marca + ", " + descricaoweb + ", " + codprod + ", " 
          + tipoemb + ", " + nomepc); 
        } 
       } 
      } 
     } 
    } 

%USERPROFILE%\AppData\Local\在普遍路径,我想自动创建\Cargas - Amostras\_logs\

你有什么想法该怎么做?

+4

Directory.CreateDirectory – Gusman

+0

你得到了什么错误,设置'OpenOrCreate'标志应该足够了。 – Luiso

+0

检查Directory.Exists然后创建文件 –

回答

2

的simpelest的解决办法是更换

using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) 

System.IO.Directory.CreateDirectory(filePath) 

,如果它不存在,或者做什么,如果它这将创建目录。

0

您需要为您的第一个文件夹和第二个目录创建两个检查。

var pathWithEnv = @"%USERPROFILE%\AppData\Local\Cargas - Amostras\"; 
      if (System.IO.Directory.Exists(pathWithEnv)) 
      { 
       pathWithEnv = System.IO.Path.Combine(pathWithEnv, @"_logs\"); 
       if (System.IO.Directory.Exists(pathWithEnv)) 
       { 
       //Do what you want to do, both directories are found.  
       } 
       else 
       { 
        System.IO.Directory.CreateDirectory(pathWithEnv); 
        //Do what you want to do, both directories are available. 
       } 
      } 
      else 
      { 
       System.IO.Directory.CreateDirectory(pathWithEnv); 

        pathWithEnv = System.IO.Path.Combine(pathWithEnv, @"_logs\"); 
        if (System.IO.Directory.Exists(pathWithEnv)) 
        { 
         //Do what you want to do, both directories are available now. 
        } 
        else 
        { 
         System.IO.Directory.CreateDirectory(pathWithEnv); 
         //Do what you want to do, both directories are created. 
        } 
      } 
+1

解决它1)你可以在存在没有问题的目录下调用create directory。 2)创建目录将自动创建子文件夹,你不需要两次调用。 –

相关问题