0

在下面的代码中,文件保存在项目的调试文件夹中,我想将文件存储在通用指定文件夹下的 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));

感谢您的回复!

4

2 回答 2

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);
于 2013-06-19T16:21:10.290 回答
2

如果您想在 AppData 下创建随机命名的文件,您可以尝试

 Guid.NewGuid().ToString("N")

这将为您提供具有合理确定性的随机字符串,它是唯一的。对于 AppData 下的文件夹:

  Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Guid.NewGuid().ToString("N"));

注意:至少把它放在某个子文件夹中,AppData 是与所有其他应用程序共享的文件夹。

于 2013-06-19T16:26:33.960 回答