gpt4 book ai didi

java - 将文件写入特定目录

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:00 25 4
gpt4 key购买 nike

我创建了一个简单的程序,可以使用以下代码写入带有目录的文件:

 String nameProve = nameField.getText();

String employee = ("C:\\Users\\ALLEN\\workspace32bit\\RETRIEVE_CHECKER1\\RETRIEVE_CHECKED1" + nameProve + ".txt");

PrintWriter outputStream1 = null;
try
{
outputStream1 = new PrintWriter(employeeName);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Can not write to " + employeeName);
System.exit(0);
}

outputStream1.println("Employee Retrieve Executed");
outputStream1.close();

我已经将我的代码导出到 .jar 文件,如果我在计算机中执行它,我的代码就可以正常工作,如果我已经开发了我的程序,但是当我将 jar 文件复制到其他计算机时,我还创建了forlder (手动)与我的代码中的目录相对应,我的程序无法工作,我的 catch block 将显示消息 Can not write to "C:\Users\ALLEN\workspace32bit\RETRIEVE_CHECKER1\RETRIEVE_CHECKED1"+ nameProve + ".txt ”

有人可以给我一些关于如何解决这个错误的建议吗?谢谢!

最佳答案

显然你是用户ALLEN在您的计算机上并以该用户身份运行该程序,因此一切正常,因为您是目录 C:\Users\ALLEN 的所有者.

然后将 jar 复制到另一台计算机,其中用户 ALLEN不存在,并且您以另一个用户身份登录,假设他的名字是 Bob并在 C:\Users 下创建该目录。您可能已经注意到,当您想以用户 Bob 创建该目录时, Windows 已警告您需要管理员权限才能完成此操作。

现在您尝试使用用户 Bob 运行您的程序谁只能访问他自己的目录C:\Users\Bob并尝试写信给ALLEN自己的目录。所以你会得到一个 IOException告诉你access denied这很好!

您不应该尝试写入其他用户的私有(private)目录,这是一个安全问题。

在处理文件系统的代码中,永远不要硬编码绝对路径,始终使用相对路径,或者如果您需要定义一个目录,您的程序所需的所有数据都应位于该目录中,则将 ist 作为参数传递。

最简单的方法是使用以下内容并使用当前的 working directory

String employee = "RETRIEVE_CHECKER1\\RETRIEVE_CHECKED1" + nameProve + ".txt";

您需要创建目录RETRIEVE_CHECKER1可以在运行程序的位置手动操作,或者更好的是在程序中使用 File#mkdir并像这样使用它:

File employee = new File(dir, "RETRIEVE_CHECKED1" + nameProve + ".txt");
PrintWriter outputStream1 = new PrintWriter(employeeName);

关于java - 将文件写入特定目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26253050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com