我正在使用StreamWriter
创建多个文件,我希望在特定目录中创建这些文件
StreamWriter w = new StreamWriter(File.Create(name + ".txt"));
w.WriteLine(name);
w.Close();
这里name
是用作文件名的变量,也可以写入该文件,但我的问题是我希望在特定目录中创建此文件。
使用 Path.Combine
Path.Combine
使用Path.PathSeparator
,并检查第一个路径的末尾是否已经有分隔符,因此它不会复制分隔符。此外,它还检查要组合的路径元素是否具有无效字符。
引自这篇SO帖子
此外,检查变量是否name
文件名包含无效字符也会很有成效。
您可以首先使用 Path.GetInvalid文件名字符方法从变量中删除name
无效字符:
var invalidChars = Path.GetInvalidFileNameChars();
string invalidCharsRemoved = new string(name
.Where(x => !invalidChars.Contains(x))
.ToArray());
引自这篇SO帖子
string directory = "c:\temp";
而不是
File.Create(name + ".txt")
用
string filename = invalidCharsRemoved + ".txt"
File.Create(Path.Combine(directory , filename ))
您也可以包含路径:
string path = "C:\SomeFolder\";
File.Create( path + name + ".txt");
或者使用如下Path.Combine
:
File.Create( Path.Combine(path, name + ".txt") );
FileStream fileStream = null;
StreamWriter writer = null;
try
{
string folderPath = @"D:SpecificDirecory";
string path = Path.Combine(folderPath , "fileName.txt");
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
fileStream = new FileStream(@path, FileMode.Create);
writer = new StreamWriter(fileStream);
writer.Write(fileBuilder.ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
writer.Close();
fileStream.Close();
}
name
包含类似@"U:TDScriptsacchf122_0023"
好的,根据您评论中的新信息,您实际上需要摆脱旧的路径和目录。
您可以使用 Path.GetFileNameWithoutExtension 方法来实现这一点。之后,您可以使用Path.Combing创建自己的路径。
下面是一个示例来演示这一点:
string myDirectory = @"C:temp";
string oldPathWithName = @"U:TDScriptsacchf122_0023";
string onlyFileName = Path.GetFileNameWithoutExtension(oldPathWithName);
string myNewPath = Path.Combine(myDirectory, onlyFileName + ".txt");
Console.WriteLine(myNewPath);
我希望这能解决你的问题。
你可以像这样为目录声明一个path
:
string path = @"c:folder....";
然后使用以下命令:
File.Create( path + name + ".txt");
你会得到你想要的