我创建了这个类来访问/创建一些文件:
public static File getFile(String filePath) throws IOException {
File file = new File(filePath);
if (file.exists() && !file.isDirectory()) {
return file;
} else {
file.createNewFile();
byte[] dataToWrite = "some text".getBytes();
FileOutputStream out = new FileOutputStream(file);
out.write(dataToWrite);
out.close();
return file;
}
}
我这样叫这个班:
getFile("myfile.txt");
应用程序尝试访问该文件,如果没有特定文件,则会创建该文件。 问题是当我在非管理员帐户下运行此代码时,我会因许可问题而获得IOException。我知道该文件将在eclipse文件夹中创建。另外我不应该为我的项目使用静态文件路径,它应该动态工作。我该怎么办?
答案 0 :(得分:1)
除非这是一个类赋值,否则我不再编写低级File
代码了。查看Apache Commons IO和/或Google Guava。
此外,在没有任何更详细的路径的情况下,在运行应用程序的任何位置查找(和创建)文件。在Eclipse中,默认情况下,这是项目的根文件夹,您可以在启动配置中更改它。在项目或文件上执行运行为... 时,将自动创建启动配置;可以通过运行>进行修改运行配置... 或运行> 调试配置... 菜单。请注意,Run和Debug配置实际上是相同的,唯一的区别是Eclipse如何启动JVM(无论是否处于调试模式)。
您还可以通过工具栏按钮调用和/或编辑它们:
查看更多信息答案 1 :(得分:0)
关于许可问题,没有解决这个问题。您应捕获异常并与用户交互,告知用户没有权限,应该/可以提供另一条路径。
您必须从控制台,应用程序参数或其他文件中捕获用户的路径。
其中一个选项是在调用应用程序时捕获参数,例如:
public static void main (String args [])
{
//First argument is the file path
String path = args[0];
File theFile = null;
if(args[0] != null){
try{
File theFile = File getFile(path);
//do stuff with the file
}catch(IOException ioe){
//NManage the Exception here
}
}
}