在c#中创建文件

时间:2013-07-25 17:17:07

标签: c#

我正在处理小型地址簿应用程序,我必须创建一个文件夹并在该文件夹中包含.xml文件,问题是该应用程序创建了一个文件夹,但它无法创建该文件!

以下是代码:

private void Form1_Load(object sender, EventArgs e)
{
    string path = 
        Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    if(!Directory.Exists(path + "\\Address Book - Neca"))
        Directory.CreateDirectory(path + "\\ Address Book - Neca");
    if (!File.Exists(path + "\\Address Book - Neca//settings.xml"))
        File.Create(path + "\\Address Book - Neca//settings.xml");
}

5 个答案:

答案 0 :(得分:4)

File.Create创建并返回文件流。只有在关闭该文件流时才会写入包含其数据的文件。

执行此操作的便捷方法是使用using块:

using (FileStream fs = File.Create(...)) {
    // write to file here
}

另请注意,首先检查文件是否存在然后创建文件并不是一个好主意。在调用File.Exists期间可能没有该文件,然后某个其他进程可能创建了同名文件,然后您对File.Create的调用将被执行并失败。在尝试创建文件时,只需尝试并捕获异常即可了解它是不可能的。

答案 1 :(得分:4)

您创建的目录方法参数在地址

之前有一个空格

答案 2 :(得分:2)

我改进了你的代码,看一看。您的文件夹路径在\

之间有空格

包括:

using System.IO;

之后:

private void Form1_Load(object sender, EventArgs e)
{
        // prepare the path
    string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        // prepare the folder path
    string folderPath = Path.Combine(path, "Address Book - Neca");
        // prepare the file path
    string settingFilePath = Path.Combine(folderPath, "settings.xml");

    if(!Directory.Exists(folderPath))
        Directory.CreateDirectory(folderPath);

    if (!File.Exists(settingFilePath))
        File.Create(settingFilePath);

}

答案 3 :(得分:1)

尝试使用BackSlashes:

private void Form1_Load(object sender, EventArgs e)
{
    string path = 
        Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    if(!Directory.Exists(path + "\\Address Book - Neca"))
        Directory.CreateDirectory(path + "\\Address Book - Neca");
    if (!File.Exists(path + "\\Address Book - Neca\\settings.xml"))
        File.Create(path + "\\Address Book - Neca\\settings.xml");
}

答案 4 :(得分:0)

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string fileName = path + "\\Address Book - Neca")) 
                if (!File.Exists(fileName))
                {
                    using (FileStream fs = File.Create(fileName, 1024))
                    {
                        Byte[] info = new UTF8Encoding(true).GetBytes(e.Message);
                        fs.Write(info, 0, info.Length);
                    }
                }