Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止文件路径的安全设置(java)_Java_File_Directory_Outputstream_Securityexception - Fatal编程技术网

阻止文件路径的安全设置(java)

阻止文件路径的安全设置(java),java,file,directory,outputstream,securityexception,Java,File,Directory,Outputstream,Securityexception,基本上,我想把文件放在与制作它的程序相同的目录中,而不是放在它里面,所以我选择了路径“filePath”,但是每当OutputStream试图写入它时,我就会得到一个安全异常。它们是已知的修复方法还是更好的方法?这取决于用户的权限,他/她是否有权使用user.home或java.io.tmpdir保存文件。执行的用户应该始终有权访问这些文件。请注意,操作系统可能会决定清理java.io.tmpdir,文件可能会被删除。user.home是否在桌面上创建文件@Ralfor我是否可以将File.se

基本上,我想把文件放在与制作它的程序相同的目录中,而不是放在它里面,所以我选择了路径“filePath”,但是每当OutputStream试图写入它时,我就会得到一个安全异常。它们是已知的修复方法还是更好的方法?

这取决于用户的权限,他/她是否有权使用
user.home
java.io.tmpdir
保存文件。执行的用户应该始终有权访问这些文件。请注意,操作系统可能会决定清理
java.io.tmpdir
,文件可能会被删除。user.home是否在桌面上创建文件@Ralfor我是否可以将File.separator+“desktop”添加到其中而不处理安全问题?
user.home
是用户的主目录。主目录的概念可以跨操作系统移植。虽然“桌面”的概念存在于所有(?)主流OSs中,并且该文件夹大部分时间被称为
Desktop
,但无法保证该文件夹的存在。但是没有什么可以阻止您测试它是否存在以及该位置是否可写。如果检测结果为阳性,则将文件保存在那里。如果没有,则返回用户的主目录。
  //String s = nameOfFile
  String filePath = System.getProperty("user.dir") + File.separator + ".." + File.separator + s;
  File location = new File(filePath);

  OutputStream print = new FileOutputStream(location);
  print.write(contents.getBytes());
  print.close();