关于java里打开隐藏文件的问题

为什么java里 可以用file.delete来删除一个隐藏文件,但是new FileOutputStream(file) 和 new FileInputStream(file) 来open 一个隐藏文件 就不行 呢 就会报FileNotFoundExecption 这是为什么呢?大家能告诉我吗!
问题补充:
不好意思,我的问题有点问题,对于一个隐藏文件,new FileInputStream(file) 是没有问题的,但是在windows平台下,new FileOutPutStream(file) 就会有问题,我后来跟进java代码,发在是在FileOutPutStream的 open()方法那里出的错!!
问题补充:
你可以自己在windows平台下 随便对一个隐藏文件 进行 new FileOutPutStream(File)就可以知道错误了

抱歉,是我对IO不太熟悉,FileOutputStream的确会在初始化时就尝试打开文件,调用的都是本地方法。
如果对一个已经存在的隐藏文件,虽然可以用input stream读出来,但是使用[code="java"]new FileOutputStream(file)[/code]尝试创建output stream就会报错
[code="java"]
Exception in thread "main" java.io.FileNotFoundException: .\src\hidden.txt (拒绝访问。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:179)
at java.io.FileOutputStream.(FileOutputStream.java:131)
at TestFile.main(TestFile.java:19)
[/code]
好象是权限的问题,但是输出文件的file.canWrite()是true
不过如果用[code="java"]new FileOutputStream(file, true)[/code]就可以在文件后面添加内容,而且不报错,因为第二个参数指定了只是在末尾添加内容,调用的是openAppend方法,不是报错中的open方法,但是这样无法修改已经存在的内容

可以使用RandomAccessFile来读写隐藏文件

对于问题中的FileOutputStream感觉比较奇怪,这个应该是用来写文件的吧,怎么和open文件联系在一起了。
无论用绝对路径还是相对路径,使用
[code="java"]
File file = new File(path);
[/code]
都是可以得到的,而且用这个得到的file对象去创建FileInputStream也是成功的,可以正常操作文件。
当然,如果一开始的路径给得不正确可以通过
[code="java"]
file.exists()
[/code]
判断出来,这样可以先肯定到底是无法打开还是路径有问题而没有找到文件。

尝试了下,没有找到如何生成隐藏文件的方法,只能是直接读隐藏文件

File file = new File(path,"1.txt");或者File file = new File(path); 可以读取隐藏文件
可以获取文件的相关属性,如: 是否可读,大小,目录等
你可以通过file.isHidden()方法来判断是否是隐藏文件

我后来跟进java代码,发在是在FileOutPutStream的 open()方法那里出的错

你把错误信息贴出来看看

出现这个问题和文件属性设为隐藏有关系
隐藏的时候用只能用FileInputStream打开,不能用FileOutputStream打开。
FileNotFoundException的异常时从java.io.FileOutputStream的private native void open(String name) throws FileNotFoundException;中抛出的,这是个本地方法。所以我认为在java中即要隐藏文件又要用FileOutputStream方式打开,很难实现。

希望有高手给提供一个解决方案。

可以通过以下方式将文件属性设置为隐藏文件

File file = new File(path);

//设置文件的隐藏属性
String set = "attrib +H " + file.getAbsolutePath();
System.out.println(set);
Runtime.getRuntime().exec(set);