在下面的代码中,文件保存在项目的debug文件夹中,我想将文件存储在通用指定文件夹下的appdata文件夹中!
AViewModel vm = DataContext as AViewModel;
var table = vm.FileSelectedItem;
if (table != null)
{
var filename = System.IO.Path.GetTempFileName();
File.WriteAllBytes(table.FileTitle, table.Data);
Process prc = new Process();
prc.StartInfo.FileName = table.FileTitle;
prc.Start();
}
//table.FileTitle is the name of the file stored in the db
// eg:(test1.docx, test2.pdf, test3.txt, test4.xlsx)
//table.Data is public byte[] Data { get; set; } property
// which stores the files coming from the db.
我正在看GetFolderPath并尝试这样的事情
System.IO.Path.GetTempFileName(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
感谢您的回复!
答案 0 :(得分:8)
GetTempFileName
返回用户临时路径中文件的完整路径。您无法使用它在特定文件夹中创建文件。
鉴于你想要存储在AppData
文件夹中,或许你想要更喜欢的东西:
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "YourCompany\\YourProduct\\Output");
var filename = Path.Combine(path, table.FileTitle);
File.WriteAllBytes(filename, table.Data);
Process.Start(filename);
答案 1 :(得分:2)
如果您想在AppData下创建随机命名的文件,可以尝试
Guid.NewGuid().ToString("N")
那将给你随机的字符串,合理的确定性是唯一的。对于AppData下的文件夹:
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Guid.NewGuid().ToString("N"));
注意:至少将其放入某个子文件夹,AppData是与所有其他应用程序共享的文件夹。