gpt4 book ai didi

Java 打印流问题

转载 作者:行者123 更新时间:2023-12-03 02:12:37 24 4
gpt4 key购买 nike

我正在尝试修改java代码以将一些内容写入txt文件中。原代码为:

try {
out = new PrintStream(system.out, true, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我使用 FileOutputStream 来执行此操作,并将代码修改为:

try {
FileOutputStream os = new FileOutputStream("wiki.txt", true);
out = new PrintStream(os, true, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

但是不起作用,错误是:

Wikipedia2Txt.java:56: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
FileOutputStream os = new FileOutputStream("wiki.txt");
^
1 error

我尝试了两种方法:1、我在磁盘上手动制作一个wiki.txt文件; 2、运行代码前不存在wiki.txt。但两者都不起作用。它只是在编译时停止了。

所以这是怎么回事?谢谢。

最佳答案

Java 并没有告诉您未找到该文件,只是说它可能在运行时找不到,并且您的程序还没有准备好处理它。

这是解决此问题的一种方法:

try {
FileOutputStream os = new FileOutputStream(file, true);
out = new PrintStream(os, true, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException fnf) {
// TODO Auto-generated catch block
fnf.printStackTrace();
}

这是另一种方法:

try {
FileOutputStream os = new FileOutputStream(file, true);
out = new PrintStream(os, true, "UTF-8");
} catch (IOException e) {
// TODO Auto-generated catch block
fnf.printStackTrace();
}

第一种方法确保编译器您的代码准备好分别处理这两个异常;第二种方法确保编译器您的代码已准备好处理这两个异常的父类(super class)。这两种方式并不相同,因为第二种方式比第一种方式涵盖了更多的异常。

最后,还有一种方法可以让编译器保持沉默,方法是使用 throws block 声明函数(可以是公共(public)父类(super class),也可以是两个单独的类)。这是一种告诉编译器您的函数不知道如何处理这些异常的方法,并且它们应该由调用者处理。这种方法的结果是,函数的每个调用者都必须在调用周围放置 try/catch,或者使用 throws 声明异常。

关于Java 打印流问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com