当前位置: 首页 > 面试题库 >

FileWriter上出现意外的FileNotFoundException

师曦
2023-03-14
问题内容

我试图创建一个将要写入的简单文本文件。

我收到以下错误:

/Library/Java/Home/bin/java -Didea.launcher.port=7542 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 14 CE.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Library/Java/Home/lib/deploy.jar:/Library/Java/Home/lib/dt.jar:/Library/Java/Home/lib/javaws.jar:/Library/Java/Home/lib/jce.jar:/Library/Java/Home/lib/jconsole.jar:/Library/Java/Home/lib/management-agent.jar:/Library/Java/Home/lib/plugin.jar:/Library/Java/Home/lib/sa-jdi.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/Library/Java/Home/lib/ext/apple_provider.jar:/Library/Java/Home/lib/ext/dnsns.jar:/Library/Java/Home/lib/ext/localedata.jar:/Library/Java/Home/lib/ext/sunjce_provider.jar:/Library/Java/Home/lib/ext/sunpkcs11.jar:/Users/Adam/IdeaProjects/Data Scraper/out/production/Data Scraper:/Applications/IntelliJ IDEA 14 CE.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain DataScraper
Exception in thread "main" java.io.FileNotFoundException: ~/Desktop/usernames.txt (No such file or directory)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
at java.io.FileWriter.<init>(FileWriter.java:90)
at DataScraper.main(DataScraper.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

码:

import Resources.Constants;

    import java.awt.*;
    import java.io.*;

    public class DataScraper {
        public static void main(String[] args) throws Exception {

        File file = new File(Constants.filePath, Constants.fileName);
        Desktop desktop = Desktop.getDesktop();
        BufferedWriter Entry = new BufferedWriter(new FileWriter(file, true));

        }
    }




package Resources;

public class Constants {

    public static String baseURL = "www.lolking.net/summoner/na/";
    public static String filePath = "~//Desktop//";
    public static String fileName = "usernames.txt";

    public static int limit = 100;
}

如果有人可以指导我解决我做错的事情,我将不胜感激。我可以在Windows笔记本电脑上使用此功能,但在Mac上似乎无法使用。


问题答案:
public static String filePath = "~//Desktop//";

这是行不通的。实际上,您说它可以在Windows上运行令我感到惊讶。

您可能用’〜’表示您的主目录…

除此之外, 对于外壳来说
,这意味着。Java不知道那是什么。它会在此处有效尝试执行的操作是找到一个名为“〜”的目录和一个其中名为的条目Desktop

使用System.getProperty("user.home")知道你的家diretory它。

这是2015年,所以不要使用File。使用java.nio.file代替:

final Path path = Paths.get(System.getProperty("user.home"),
    "Desktop", "yourFileName");

try (
    final BufferedWriter writer = Files.newBufferedWriter(path,
        StandardCharsets.UTF_8, StandardOpenOption.APPEND);
) {
    // use the writer here
}


 类似资料:
  • 我正试图在Mac OS X上运行一个在windows上运行的项目。该项目使用OpenGL和PyQt库。使用OpenGL库时似乎出现了问题。 我下载了一个螺旋的OpenGL演示。 返回OpenGL:b'2.1 NVIDIA-10.0.51 310.90.10.05b12' 当我尝试运行另一个项目时,PyCharm意外退出,我得到以下结果: Mac信息图片 项目链接 主窗口。py公司 gamewidg

  • 昨天,我刚刚在Mac OS Catalina 10.15.7版上安装了面向企业Java和Web开发人员的Eclipse IDE。我拖动日食。从下载文件夹到应用程序文件夹的应用程序。它工作得很好。我创建了几个servlet。但今天,当我点击应用程序打开它时,我收到了一个问题报告(错误),所以它没有打开。 错误详细信息为。。 启动后的唤醒时间:3300秒 系统完整性保护:启用 崩溃的线程:0 异常类型

  • 问题内容: 运行这部分代码时出现错误。尝试了一些现有的解决方案,但都没有帮助 我总是收到这个错误 问题答案: 这意味着在完成所有代码块之前,已到达源代码的末尾。代码块以类似如下的语句开头,然后至少需要一行包含其中应包含的代码的行。 好像您在ipython控制台中逐行执行程序。这适用于单个语句,例如for循环,但不适用于代码块。请参见以下示例: 为避免此错误,您必须将整个代码块作为单个输入输入:

  • 问题内容: 当尝试解析一个空字符串时,我得到一个。为什么它引发与解析a不同的错误?在来源中只有明确提出。 问题答案: 用于将源字符串(必须是表达式)编译为AST。 如果源字符串不是有效的表达式(如空字符串),则将引发a 。另一方面,如果源字符串是一个有效的表达式(例如,变量名称,如),将成功,但可能会失败,并显示。 因此,在使用和时都应同时捕获。

  • 问题内容: // if the box is outside the window, move it to the end function checkEdge() { var windowsLeftEdge = $(‘#window’).position().left; 我在上面提到的行上收到了UncaughtSyntaxError:意外的令牌ILLEGAL。它仅在GoogleChrome和Sa

  • 我的ejs文件路径不工作。 SyntaxError:编译ejs时,C:\users\mikda\desktop\coltfull\section33\yelpcamp\v3\views\landing.ejs中出现意外的内标识“/” 如果上述错误没有帮助,您可能希望尝试ejs-lint:https://github.com/ryanzim/ejs-lint,或者,如果您打算创建一个异步函数,则将作