使用File目录作为参数

时间:2018-06-11 09:07:58

标签: c# function methods class-library

编辑:对错误道歉 - 我理解一个不太清楚。

我创建了一个类库,我希望用多个方法/函数填充它。我正在研究其中一种方法,但我正在努力使用自定义目录的方法。

请参阅类库中的方法代码:

public class SharpFuntions
    {
        public static void CreateFile(string location){
            string path = location;
                try
                   {
                    // Delete the file if it exists.
                    if (File.Exists(path))
                        {
                    File.Delete(path);
                        }
                    // Create the file.
                    File.Create(path);
                        {
                        }
                    }
                catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
        }           
    }

现在,当我尝试调用此函数并使用目录时,它不会通过。 见下文:

static void Main(string[] args)
{  
    SharpFuntions.CreateFile(@"C:\User\Text.txt");
}

我不确定上述内容是否可行。我只是希望能够调用该函数,并且每次使用它时都可以插入不同的目录/文件名。

所以下面的作品我知道,但我不想硬编码目录/文件名

public class SharpFuntions
    {
        public static void CreateFile(){
            string path = @"c:\temp\MyTest2.txt";
                try
                   {
                    // Delete the file if it exists.
                    if (File.Exists(path))
                        {
                    File.Delete(path);
                        }
                    // Create the file.
                    File.Create(path)
                        {
                        }
                    }
                catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
        }    

2 个答案:

答案 0 :(得分:3)

File.Create Method (String)

  

创建或覆盖指定路径中的文件。

     

路径类型:System.String

     

要创建的文件的路径和名称。

File.Delete Method (String)

  

删除指定的文件。

File.Exists Method (String)

  

确定指定的文件是否存在。

SharpFuntions.CreateFile(@"C:\User");

...

// path is not a file name, it will never work

File.Create(path);

您展示的所有方法都不使用路径,而是使用文件名。你需要改变那个

更好的例子

public static void CreateFile(string fileName)
{
    try
    {
       // Delete the file if it exists.
       if (File.Exists(fileName))
       {
          // Note that no lock is put on the
          // file and the possibility exists
          // that another process could do
          // something with it between
          // the calls to Exists and Delete.
          File.Delete(fileName);
       }

       // create empty file
       using (File.Create(fileName));

       // Create the file.
       //using (FileStream fs = File.Create(fileName))
       //{
       //   Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
       //    Add some information to the file.
       //   fs.Write(info, 0, info.Length);
       //}

       // Open the stream and read it back.
       //using (StreamReader sr = File.OpenText(fileName))
       //{
       //   string s = "";
       //   while ((s = sr.ReadLine()) != null)
       //   {
       //      Console.WriteLine(s);
       //   }
       //}
    }   
    catch (Exception ex)
    {
        // log
        // message
        // output to a console, or something
        Console.WriteLine(ex.ToString());
    }
}

<强>使用

string fileName = @"c:\temp\MyTest.txt";

CreateFile(fileName);

<强>更新

我已更新代码以创建空文件,如果这是您想要的

答案 1 :(得分:0)

您可以尝试使用FileInfo

 public static void CreateFile(string location)
            {
                var fileInfo = new FileInfo(location);
                try
                {
                    // Delete the file if it exists.
                    if (fileInfo.Exists)
                    {
                        fileInfo.Delete();
                    }
                    // Create the file and directory.
              if (!Directory.Exists(fileInfo.DirectoryName))
                    Directory.CreateDirectory(fileInfo.DirectoryName);


                    fileInfo.Create();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }