簡體   English   中英

如何正確設置 localappdata 路徑,不顯示完整路徑(Path.Combine & Environment.GetFolderPath)

[英]How to set localappdata path properly, not showing the full path(Path.Combine & Environment.GetFolderPath)

我正在嘗試 Path.Combine,但突出顯示了字符串(appdatapath),助手說“字段初始化程序無法引用非靜態字段、方法或屬性'MySuperAPP.appdatapath'”

代碼是:

string appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

string path = Path.Combine(appdatapath, "second/part/of/folderpath");

我想要的是:字符串路徑=“C:/Users/USER/AppData/Local/Some/Dir/”

我嘗試了什么:

string static appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

string static path = Path.Combine(appdatapath,"second/part/of/folderpath").ToString;

public static string GetMyLocalAppDir()
        {
            return Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToString();
        }
string path = Path.Combine(GetMyLocalAppDir(),"second/part/of/folderpath").ToString;

我認為我嘗試的變體可能是錯誤的..)需要你的建議)謝謝!)

當您initialize一個字段時(這意味着:當您在runtime為一個動態字段提供一個值時)它必須是一個static值。 因此,您必須將“appdatapath”聲明為static

public partial class MainWindow : Window
{
    private static string appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

    private (static) string path = System.IO.Path.Combine(appdatapath, "second/part/of/folderpath"); //make this static if you want that this field can't be changed.
    public MainWindow()
    {
        InitializeComponent();
    }
}

還要確保您的聲明順序正確:

public or private static or not類型,例如name of variable type eg string名稱

最后:如果您有更多目錄要組合,請將每個部分分開放置:

Path.Combine(appdatapath, "second", "part", "of", "folderpath")
    public static void Read_bootup3_file()
    {
        qq = 0;
        string downloadz2;

        string fileNameSDcard = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "download.txt");
        string CurrentContents;
        CurrentContents = fileNameSDcard;
//CurrentContents = File.ReadAllText(fileNameSDcard);
        File.WriteAllText(fileNameSDcard, CurrentContents);

        using (StreamReader sr = new StreamReader(fileNameSDcard))
        {
            downloadz2 = sr.ReadToEnd();
        }
//downloadz = downloadz2.ToCharArray();

        qq = 0;
        for (leep = 0; leep <= lotsize; leep++)
        {
            for (lep = 0; lep <= 20; lep++)
            {
                Tester.garage_array_database[lep, leep] = downloadz[qq].ToString();
                qq++;
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM