【问题标题】:FileNotFoundException when using FileWriter使用 FileWriter 时出现 FileNotFoundException
【发布时间】:2013-01-30 04:45:14
【问题描述】:

我正在尝试将一些消息写入文本文件。文本文件位于服务器路径中。我能够从该文件中读取内容。但我无法将内容写入该文件。我收到 FileNotFoundException: \wastServer\apps\LogPath\message.txt (Access Denied)。

注意:文件有读写权限。

但是我做错了什么。请在下面找到我的代码。

代码:

    String FilePath = "\\\\wastServer\\apps\\LogPath\\message.txt";

    try {
        File fo = new File(FilePath);
        FileWriter fw=new FileWriter(fo); 
        BufferedWriter bw=new BufferedWriter(fw); 
        bw.write("Hello World"); 
        bw.flush(); 
        bw.close(); 
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

请帮我解决这个问题?

【问题讨论】:

  • 这是在什么平台上运行的?
  • @theunlucky:你怎么知道这是事实?致 Ranganath:请打印整个堆栈跟踪。
  • 文件是否被其他进程打开?你try-catch 很危险,因为它实际上并没有尝试在写入文件时关闭文件(即使文件已打开)
  • Java 平台。将一些内容写入该文件的示例 java 类。文件位于 WAS 日志服务器路径上。

标签: java


【解决方案1】:

请检查您是否可以访问appsLogPath目录。

在运行时键入这些(Windows 键 + R)

\\\\wastServer\\apps\\

\\\\wastServer\\apps\\LogPath\\

并查看您是否可以从正在执行上述代码的机器和用户访问这些目录。

【讨论】:

  • 我可以访问所有目录。
【解决方案2】:

您没有共享、目录之一或文件本身的写入权限。可能文件已经打开了。

【讨论】:

  • 我检查了 fileExists 和 canWrite 权限。两者都是真的。
【解决方案3】:

这一行之后

 File fo = new File(FilePath);

尝试打印绝对路径

System.out.println( fo.getAbsolutePath() );

然后检查文件是否存在于那个位置,而不是直接在那个位置检查

\\\\wastServer\\apps\\LogPath\\message.txt

所以,您将知道编译器在哪里搜索文件。

【讨论】:

  • 已经是绝对路径了。该文件不必存在于该位置。编译器不搜索该文件。没有人在搜索文件。他的程序破坏性地打开文件进行输出。没有答案。
猜你喜欢
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多