保存.txt文件的文件路径

时间:2009-08-15 17:34:51

标签: c# openfiledialog

我需要我的应用程序要求用户浏览到特定文件,保存该文件位置,然后将TextBox中的字符串写入其中。

但是,我只需要我的最终用户浏览到应用程序启动第一次的文件。只有一次。

这就是我的困境,如果它是第一次启动,我怎样才能让我的应用记住

3 个答案:

答案 0 :(得分:6)

我认为你想要一个文件夹,而不是文件,但除此之外。

您可以使用UserSetting(请参阅项目属性,设置)并使用空值或无效值进行部署。只有从设置中读取无效值时,才会启动对话框。

这是基于每个用户。

您可以在.NET中使用注册表,但您确实希望尽可能远离它。库不在System命名空间中这一事实是一个指标。

答案 1 :(得分:0)

保存在注册表中选择的文件,或保存在用户的Documents and Settings文件夹中的配置文件中。

要访问本地程序的路径,请使用:

string path = Environment.GetFolderPath(Environment.LocalApplicationData);

答案 2 :(得分:0)

我会使用Registry为您的应用程序添加“SavedFileLocation”条目。

有关使用注册表的教程,请检查here

然后你可以检查密钥是否存在,如果没有出现对话框 如果密钥存在,则应检查文件是否存在。如果该文件不存在,您可能应该将此信息提供给用户,并询问他们是否要在那里创建新文件,或选择新位置。
否则,获取该值并将其保留为运行时。

代码:

AppInitialization()
{
    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
        @"Software\YourName\YourApp"
        ?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );


    this.fileLocation = appKey.GetValue( "SavedFileLocation" )
        ?? GetLocationFromDialog()
        ?? "DefaultFileInCurrentDirectory.txt";
}

private static string GetLocationFromDialog()
{
    string value = null;

    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
        @"Software\YourName\YourApp"
        ?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );

    using( OpenFileDialog ofd = new OpenFileDialog() )
    {
        if( ofd.ShowDialog() == DialogResult.OK )
        {
            value = ofd.File;
            appKey.SetValue( "SavedFileLocation", value );
        }
    }

    return value;
}