如何将应用程序的本机文件保存到本地文件夹?

时间:2015-08-18 14:09:06

标签: c#

好的,所以我在c#中创建了一个gui应用程序,现在我想在用户单击“保存”按钮时将其本机文件保存到磁盘位置,稍后在用户单击“打开”时在同一个应用程序中打开它按钮或双击资源管理器中的文件(例如,当我们单击“在MS Word中保存”时,保存Word文件并稍后将其打开)。

我搜索了保存应用程序设置并保存用户设置,我已在我的应用程序中完成此操作,以便在应用程序运行时在某些列表中保存一些局部变量。

有人可以告诉我,如果有一些功能可以收集我在我的应用程序中的所有设置并将其写入本地文件夹中的文件,或者我必须逐个保存我的应用程序中的所有设置然后以某种方式将它们写入文件?

3 个答案:

答案 0 :(得分:0)

让您的应用程序将您要保存的所有信息写入应用程序目录中的文本文件(因此文件路径将始终相同)。你可以有一个名为SetupSaver的类或其他东西。您将需要一种方法来检查并查看应用程序目录中是否存在具有指定名称的文本文件,如果不存在则创建一个文本文件。然后你就可以从该文件中读取数据并写入它。

文件创建者方法:

public static void logPageCreator()
        {
            if (!System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "logFile.txt"))
            {
                System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "logFile.txt");
            }
            else 
            {
                //File already exists moving on.....
            }
        }

发送数据方法:

public static void Log(string message)
        {
            try
            {  
                System.IO.StreamWriter file = new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "logFile.txt",true);
                file.WriteLine(message);
                file.Close();

                long size = new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logFile.txt").Length;
                if (size > 5000000)// limits the text file size to this many bytes
                {
                    File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "logFile.txt", String.Empty);
                }
            }
            catch
            {

            }
        }

数据读取器方法:

int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = 
   new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
   Console.WriteLine (line);
   counter++;
}

file.Close();

答案 1 :(得分:0)

也许您需要集成到.netFramework中的库(或命名空间)System.Xml。 以下是MSDN的链接,它解释了XmlDocument类的用法:https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=VS.80).aspx

如果您认为使用XmlDocuments类很难,您可以尝试将设置写入Register。

至于在你的应用程序中收集你的设置,我建议你创建一个静态类来存储app中的参数。就我而言,手动收集应用程序中的设置总是比自动更好。

答案 2 :(得分:0)

我了解您要保存应用程序设置和用户设置。这与文件形成对比:一个操作员可能想要创建几个不同的文件,但是他的设置在更改之前保持不变,类似于更改选项。

如果您正在寻找,那么您可以使用的方法取决于您正在谈论的应用程序和用户设置的数量。

方法1:Properties.Settings

如果你没有很多,比如少于30或者什么,可能是50,那么最简单的方法就是使用项目的应用程序设置。

  • 在解决方案资源管理器中,找到使用应用程序和用户设置的项目
  • 右键单击它并选择 properties
  • 在新窗口的左侧,您将看到Application / Build / Build Events / etc。
  • 查找设置
  • 在这里,您可以为设置指定名称,类型(字符串/ int / datetime / etc)和默认值。
  • 应用程序设置通常不可更改,用户设置如下。使用范围在应用程序和用户之间进行选择

输入所有设置并保存后。环境为您创建了一个派生自System.Configuration.ApplicationSettingsBase的类。此类具有所有设置的属性。访问如下:

Properties.Settings.Default.MySetting = ...
var myOtherSetting = Properties.Settings.Default.MyOtherSetting;

Properties.Settings.Default.Save();

您可以保存/重新加载/重置这些属性,并在属性更改时收到通知。请参阅ApplicationSettingsBase

用户属性按用户保存,并在程序启动时自动加载。

方法2:创建设置类

另一种可能性是您创建一个具有所有设置属性的类,并在需要时加载/保存它们,例如程序启动或存在时。

使用XMLFormatter类时,以XML格式保存它们很容易。

private void SaveAsXML(MySettings settings, string fileName)
{
    using (var streamWriter = File.CreateText(fileName))
    {
        var xmlSerializer = new XMLSerializer(typeof(MySettings));
        xmlSerializer.Serialize(streamWriter, settings);
    }
}

private MySettings ReadAsXML(string fileName)
{
    using (var streamReader = File.OpenText(fileName))
    {
        var xmlSerializer = new XMLSerializer(typeof(MySettings));
        return xmlSerializer.Deserialize(streamReader);
    }
}

优势:完全控制您的设置。您可以将设置从一个操作员移交给另一个操作员。 缺点:你必须小心保存在适当的地方