NTFS分区,文件(文件夹)设置用户权限为不可读取(或者不可写入)。
请问如何判断这个文件访问权限?
本意是判断一个文件路径file = new File(path);是否存在,和是否具有访问权限,来截获这个异常,代码如下:
catch (FileNotFoundExcepion e){
//判断文件不存在
if (!file.exist){
System.out.println("File is not exist!");
}
//判断文件不可访问
if (!file.???)){
System.out.println("File is not exist!");
}
}
找到方法file.canRead()和file.Write(),
但是测试了一下,file.canRead()等于true,明显不对
请问有其他方法判断这个访问权限吗?
手动更改这个文件的读取权限,如何识别这个属性?
还是要获取当前用户是否在文件可读权限列表里?
如果有好的方法,请予以解答,在此谢谢大家!
请问如何判断这个文件访问权限?
本意是判断一个文件路径file = new File(path);是否存在,和是否具有访问权限,来截获这个异常,代码如下:
catch (FileNotFoundExcepion e){
//判断文件不存在
if (!file.exist){
System.out.println("File is not exist!");
}
//判断文件不可访问
if (!file.???)){
System.out.println("File is not exist!");
}
}
找到方法file.canRead()和file.Write(),
但是测试了一下,file.canRead()等于true,明显不对
请问有其他方法判断这个访问权限吗?
手动更改这个文件的读取权限,如何识别这个属性?
还是要获取当前用户是否在文件可读权限列表里?
如果有好的方法,请予以解答,在此谢谢大家!
解决方案 »
- 哪位大神,能细细讲一下页面加载的过程
- 求助高手关于start javaw -jar example.jar启动的bat后,由于这个程序是阻塞的,会一直执行下去,如何做一个终止执行的bat呢
- 得到JS的最终数据结果
- 有用过JPcap的请进
- 获取程序运行路径结果不一致的问题
- 请大家帮我看一下这个程序,错在什么地方,感激不尽:)
- 很奇观的问题,不知道有人会不??????
- 能使用java访问串口吗?
- java要多久可以学习到一个程序
- 谁知道国内哪有下载jdk1.4,Thanks!
- java.lang.NoSuchMethodError: main 错误,请教!
- Java中使用预备语句查询access数据库无结果返回。
看看api和doc
Re:1楼
如果文件很大,这样即使读取一个字节,也是很耗时间的。况且我现在这个“文件无权限访问”,就是从FileNotFoundExcepion抛出的
只是想分辨是文件不存在生成的异常(!File.exist(),已解决),还是文件无访问权限(这个是我的提问点),还是其他错误(FileNotFoundExcepion包含很多其他异常)。Re:2楼
现在就是在看到文件的情况下,把文件属性中当前用户的“读”权限单独禁用,这样file.exist()是返回true的,但是file.canRead()和file.write()同样返回true。我的问题还是没有解决= ="Re:3楼
那些方法,偶都试过了
那么file.canRead()返回true 和file.write()返回 false
我的测试过程是这样的,首先在 C:\Documents and Settings\谭凌云\桌面\随笔 下有一个文件 随记.txt,它里面有两句话,java真的可以跳过权限吗?java真的可以跳过权限吗? 1、当我把它所有的权限都去掉后,得出的结果是这样的
2、当我让它有只读的权限时,结果是这样的
3、当我让它有既可读也可写的权限时,结果是这样的
附程序代码:import java.io.*;public class FileTest
{
public static void main(String[] args)
{
File f = new File("C:\\Documents and Settings\\谭凌云\\桌面\\随笔\\随记.txt");
if(f.isFile())
System.out.println("It is a file");
else
System.out.println("It is not a file");
if(f.canRead())
System.out.println("can read");
else
System.out.println("can't read");
if(f.canWrite())
System.out.println("can write");
else
System.out.println("can't Write");
try
{
FileWriter fw = new FileWriter(f,true);
fw.write("java真的可以跳过权限吗?");
fw.flush();
System.out.println("success");
}
catch(IOException e)
{
e.printStackTrace();
}
try
{
FileReader fd = new FileReader(f);
int c;
while((c=fd.read()) != -1)
{
System.out.print((char)c);
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
我查了一下JAVA API
java.io.FileNotFoundException只包含2个错误点,如下:[public class FileNotFoundExceptionextends IOException当试图打开指定路径名表示的文件失败时,抛出此异常。 在不存在具有指定路径名的文件时,此异常将由 FileInputStream、FileOutputStream 和 RandomAccessFile 构造方法抛出。如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,此时这些构造方法仍然会抛出该异常。] 这样我的问题搞清楚了,捕捉FileNotFoundException
catch (FileNotFoundExcepion e){
if (!file.exist){
System.out.println("File is not exist!"); //文件不存在
} else {
System.out.println("File can not visit!"); //文件不可访问
}
}最后这个帖子我想给各位加分,但是提示我发帖没有超过5天,不能结贴,等时间到了我会加上去的,也请遇到这方面问题的朋友,能够借鉴一下此例。