C#在应用程序中保存文件位置(C# Saving file location within application)
我希望用户能够选择程序文件在其PC中的位置,并在每次启动应用程序时保存该位置,直到他们更改它为止。 我从来没有用C#做过这样的事情,我仍然认为自己是C#的新手。 我已经考虑过创建一个Settings.txt文件或XML文件并读取用户保存的行,但我仍然不确定如何存储它。 任何帮助或建议将不胜感激。
I'm wanting the user to be able to choose the location of where a program file is located within their PC and save that location for every time my application is launched until they change it. I have never done anything like this with C#, I still consider myself a novice with C#. I've considered making a Settings.txt file or XML file and reading the lines as saved by the user, yet I still am unsure as how to store this. Any help or suggestions would be greatly appreciated.
最满意答案
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 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; } }Output:
foo bar bat baz更多推荐
发布评论