C# C在应用程序中保存文件位置
我希望用户能够选择程序文件在其PC中的位置,并在每次启动我的应用程序时保存该位置,直到他们更改它为止。我从来没有用C做过这样的事情,我仍然认为自己是C的新手。我已经考虑过做一个设置。txt文件或XML文件,并读取用户保存的行,但是我仍然不确定如何保存这个文件。如果您有任何帮助或建议,我们将不胜感激。首先,我觉得创建您自己的文件类型来保存特定的数据是可以的C# C在应用程序中保存文件位置,c#,.net,winforms,settings,C#,.net,Winforms,Settings,我希望用户能够选择程序文件在其PC中的位置,并在每次启动我的应用程序时保存该位置,直到他们更改它为止。我从来没有用C做过这样的事情,我仍然认为自己是C的新手。我已经考虑过做一个设置。txt文件或XML文件,并读取用户保存的行,但是我仍然不确定如何保存这个文件。如果您有任何帮助或建议,我们将不胜感激。首先,我觉得创建您自己的文件类型来保存特定的数据是可以的 当你开发你的程序时,你可能会发现有一点限制,但要了解我会从脑海中出现的任何解决方案开始,然后你可能会确定哪些部件需要重新设计以提高效率或实用性
当你开发你的程序时,你可能会发现有一点限制,但要了解我会从脑海中出现的任何解决方案开始,然后你可能会确定哪些部件需要重新设计以提高效率或实用性。最简单的方法可能是用于此目的 还有很多其他选项,包括甚至使用UserAppDataPath、LocalUserAppDataPath、UserAppDataRegistry等公开的目录或注册表项之一
void Main()
{
// Settings in a Text File
string path1 = @"C:\\Dev\\settings.txt";
string setting1;
string setting2;
setting1 = "foo";
setting2 = "bar";
SaveSettingsToTextFile(path1, setting1, setting2);
setting1 = "";
setting2 = "";
LoadSettingsFromTextFile(path1, out setting1, out setting2);
Console.WriteLine(setting1);
Console.WriteLine(setting2);
// Settings in an Xml File
string path2 = @"C:\\Dev\\settings.xml";
MySettings mySettings = MySettings.Create(path2);
mySettings.setting1 = "bat";
mySettings.setting2 = "baz";
mySettings.Save();
mySettings = null;
mySettings = MySettings.Create(path2);
Console.WriteLine(mySettings.setting1);
Console.WriteLine(mySettings.setting2);
}
void SaveSettingsToTextFile(string path, string setting1, string setting2)
{
var sb = new StringBuilder();
sb.AppendLine(setting1);
sb.AppendLine(setting2);
File.WriteAllText(path, sb.ToString());
}
void LoadSettingsFromTextFile(string path, out string setting1, out string setting2)
{
var lines = File.ReadLines(path).ToArray();
setting1 = lines[0];
setting2 = lines[1];
}
public class MySettings
{
public string setting1 { get; set; }
public string setting2 { get; set; }
static XmlSerializer serializer = new XmlSerializer(typeof(MySettings));
public static MySettings Create(string savePath)
{
MySettings instance;
if(File.Exists(savePath))
{
var xDoc = XDocument.Load(savePath);
var reader = xDoc.CreateReader();
instance = (MySettings)serializer.Deserialize(reader);
reader.Close();
}
else
{
instance = new MySettings();
}
instance.SavePath = savePath;
return instance;
}
public void Save()
{
var xDoc = new XDocument();
var writer = xDoc.CreateWriter();
serializer.Serialize(writer, this);
writer.Close();
File.WriteAllText(this.SavePath, xDoc.ToString());
}
[XmlIgnore]
public string SavePath { get; private set; }
}
输出:
foo
bar
bat
baz
最简单的方法是向项目中添加一个设置文本文件或xml文件,并用您的C代码进行更新。这非常简单,所以我不会在这里详细描述如何做。只需在谷歌上搜索用c写文本文件。在线查找如何用c写文本文件的示例。然后尽最大努力编写代码。如果你仍然被困住了,回来用你写的代码编辑这个问题,以及你得到的错误。我同意,开始并展示你的想法会很酷。我想,当你开始寻找和发展自己的想法时,你会很快看到可以做些什么。通常我们会写入注册表或设置文件.xml、.config或roll-your-own。谢谢,我来这里是作为一个起点,因为我真的不知道从哪里开始。如果我在这个过程中失血过多,无法对最终的结果进行分类,我会当面痛击,然后回来。谢谢,我来这里是作为出发点,因为我真的不知道从哪里开始。如果我在这个过程中失血过多,无法对我的结果进行分类,我会当面反驳,然后回来。用你的进展更新这个问题,并在这里发表评论。我会回答,并给出我的2美分: