路径简单保存到csv文件的方式,下次直接获取。
调用方法:
try
{
dialog.SelectedPath = FolderPathHelper.GetLastPath("9009","菜单1");
}
catch (Exception ex)
{
Log($"获取路径失败:{ex.ToString()}");
#if DEBUG
throw ex;
#endif
}
try
{
FolderPathHelper.SavePath("9009","菜单1","C:\\");
}
catch (Exception ex)
{
Log($"保存路径失败:{ex.ToString()}");
#if DEBUG
throw ex;
#endif
}
保存与获取的类:
public class FolderPathHelper
{
public static string GetLastPath(string user, string menu)
{
string currentPath = Directory.GetCurrentDirectory() + "\\UserPath\\LastPath.csv";
if (!File.Exists(currentPath))
{
return "";
}
var table = OpenCSVFile(currentPath);
var folder = table.AsEnumerable().FirstOrDefault(row => row["user"].ToString() == user && row["menu"].ToString() == menu)?["folder"].ToString() ?? "";
return folder;
}
public static bool SavePath(string user, string menu, string folder)
{
//判断目录是否存在
string currentPath = Directory.GetCurrentDirectory() + "\\UserPath\\LastPath.csv";
DataTable table;
table = OpenCSVFile(currentPath);
if (table.Rows.Count > 0)
{
var rows = table.AsEnumerable().Where(row => row["user"].ToString() == user && row["menu"].ToString() == menu).ToList();
foreach (var row in rows)
{
table.Rows.Remove(row);
}
}
table.Rows.Add(user, menu, folder, DateTime.Now.ToString("yyyyMMdd hhmmss"));
SaveCSV(table, currentPath);
return true;
}
public static void SaveCSV(DataTable dt, string fullPath)//table数据写入csv
{
System.IO.FileInfo fi = new System.IO.FileInfo(fullPath);
if (!fi.Directory.Exists)
{
fi.Directory.Create();
}
using (System.IO.FileStream fs = new System.IO.FileStream(fullPath, System.IO.FileMode.Create,
System.IO.FileAccess.Write))
using(System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.UTF8))
{
for (int i = 0; i < dt.Rows.Count; i++) //写入各行数据
{
var data = new List<string>();
for (int j = 0; j < dt.Columns.Count; j++)
{
var str = dt.Rows[i][j].ToString();
//替换英文冒号 英文冒号需要换成两个冒号
str = str.Replace("\"", "\"\"");
//含逗号 冒号 换行符的需要放到引号中
if (str.Contains(',') || str.Contains('"') || str.Contains('\r') || str.Contains('\n'))
{
str = $"\"{str}\"";
}
data.Add(str);
}
sw.WriteLine(string.Join(",",data));
}
sw.Close();
fs.Close();
}
}
private static DataTable OpenCSVFile(string filepath)
{
string strpath = filepath; //csv文件的路径
var table = new DataTable();
table.Columns.Add("user");
table.Columns.Add("menu");
table.Columns.Add("folder");
table.Columns.Add("time");
if (!File.Exists(filepath))
{
return table;
}
string strline;
string[] aryline;
using (StreamReader mysr = new StreamReader(strpath, System.Text.Encoding.Default))
{
while ((strline = mysr.ReadLine()) != null)
{
aryline = strline.Split(new char[] { ',' });
var row = table.NewRow();
for (int i = 0; i < table.Columns.Count; i++)
{
row[i] = aryline[i];
}
table.Rows.Add(row);
}
return table;
}
}
}
来源:oschina
链接:https://my.oschina.net/u/4322161/blog/4460848