我有一个C#控制台应用程序,它使用来自txt文件的文本作为SQL查询的参数。查询运行后,它将最高主键存储在文本文件中。下次运行时,它使用WHERE语句中该文本文件的第一行来获取比以前存储的主键更高的主键。以下是我使用的代码:
//获取最新的主键
static String mostRecentID= File.ReadAllLines(@"C:\DataStorage\latestID.txt").First().Trim();
//运行查询
SELECT * FROM whatever WHERE pk > mostRecentID
//存储最新的主键
DataRow mostRecentIDRow= exportTable.Select().FirstOrDefault();
if (mostRecentIDRow!= null)
{
mostRecentID = mostRecentIDRow[0].ToString().Trim();
File.WriteAllLines(@"C:\DataStorage\latestID.txt", new String[] { mostRecentID});
}
我需要能够独立于程序或文件所在的位置读取和写入此文本文件。有没有办法在将它保存在程序的release文件夹中时执行此操作?
答案 0 :(得分:0)
如果您尝试将文本文件保留在应用程序的根位置,请使用此
string file = Path.Combine(
System.Reflection.Assembly.GetExecutingAssembly().Location, "latestID.txt");
答案 1 :(得分:0)
您可以像这样获取当前正在运行的程序集的路径:
string path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
在那里你可以保存/加载你的文件
答案 2 :(得分:0)
只需使用此变量:
string myDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
获取程序执行的目录。
因此,当您将.txt放入发布文件夹时,您可以使用:
File.WriteAllLines(myDirectory + "/" + "latestID.txt", new String[] { mostRecentID});