GetTempFileName()并保存到AppData文件夹

时间:2013-06-19 16:16:04

标签: c# wpf

在下面的代码中,文件保存在项目的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));

感谢您的回复!

2 个答案:

答案 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是与所有其他应用程序共享的文件夹。