FileWriter上出现意外的FileNotFoundException [英] Unexpected FileNotFoundException on FileWriter

查看:191
本文介绍了FileWriter上出现意外的FileNotFoundException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个将要写入的简单文本文件.

I am attempting to create a simple text file that I will be writing to.

我收到以下错误:

/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上似乎无法使用.

If someone could please guide me through what I'm doing wrong, I would appreciate it. I got this working on my Windows laptop, but on my Mac, it doesn't seem to be working.

推荐答案

public static String filePath = "~//Desktop//";

这将不起作用.实际上,您说它可以在Windows上运行,我感到很惊讶.

This will not work. In fact I am surprised that you say that it works on Windows.

您可能用'〜'来表示您的主目录...

You probably meant for the '~' to mean your home directory...

除了对外壳来说表示 以外. Java不知道那是什么.它将在这里有效地尝试执行的操作是找到一个名为〜"的目录和一个名为Desktop的条目.

Except that it means this for the shell. Java has no idea what that is. What it will effectively try to do here is find a directory named '~' and an entry named Desktop in it.

使用System.getProperty("user.home")知道您的家庭住所.

Use System.getProperty("user.home") to know what your home diretory it.

现在是2015年,所以不要使用File.改用java.nio.file:

And this is 2015, so don't use File. use java.nio.file instead:

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
}

这篇关于FileWriter上出现意外的FileNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆