【发布时间】:2022-06-25 04:33:57
【问题描述】:
如何创建只有我的应用程序才能修改的文件?我需要它,因为我有一个应用程序创建了一个存储用户信息的.txt 文件,我不希望用户能够通过文件资源管理器修改它,但我的应用程序应该能够创建它,修改它并删除它。
这是我的代码:
public void Write(List<Queue> Queue)
{
try
{
CreateFile();
using (FileStream Stream = new FileStream(Path, FileMode.Open))
{
using (StreamWriter file = new StreamWriter(Stream))
{
string Data = JsonSerializer.Serialize(Queue);
file.Write(Data);
file.Flush();
file.Close();
}
}
}
catch (IOException ex)
{
Log.GetInstance().Write(ex.Message);
}
public void CreateFile()
{
if (!FileExist)
{
File.Create(Path).Close();
}
}
public List<Queue> ReadFile()
{
try
{
if (FileExist)
{
using (StreamReader file = new StreamReader(Path))
{
string Data= file.ReadToEnd();
return JsonSerializer.Deserialize<List<Cola>>(Data);
}
}
}
catch (JsonException ex)
{
Log.GetInstance().Write(ex.Message);
}
catch (IOException ex)
{
Log.GetInstance().Write(ex.Message);
}
return null;
}
【问题讨论】:
-
I don't want the user can modify it on from File Explorer- 为什么不呢?您的应用打算在文件中存储什么?可能有更好的方法来实现您的目标,但我们必须知道实际目标是什么。 -
简短回答:你不能。长答案:您可以让用户更难,但您永远(!)无法阻止它,而且根本不值得付出努力。
-
应用程序实际上无法以其他人无法做到的方式创建和维护文件(或任何其他本地存储的数据)。
-
您可以保留文件内容的内存版本,如果文件与内存中的内容不匹配,您可以定期替换该文件,但此时即使拥有物理文件又有什么意义。这就是数据库的用途。
-
您可以加密文件的内容,但其中的诀窍是保持解密密钥的秘密。你可以很难得到但不是不可能。