我正在处理小型地址簿应用程序,我必须创建一个文件夹并在该文件夹中包含.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");
}
答案 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);
}
}