我正在尝试创建一个程序,该程序通过文本文件并使用Eclipse计算Java中的单词用法。该程序有效,但我想将输出值保存到文本文件中。我正在使用这段代码来做到这一点:
PrintStream out = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(out);
我用过
throws FileNotFoundException
去除文件未找到的异常。
当我运行程序时,出现错误
Exception in thread "main" java.io.FileNotFoundException: output.txt
(Too many open files in system)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
at nGram.HashMapFun.main(HashMapFun.java:66)
我在java项目中创建了一个output.txt文件,所以我不知道为什么程序找不到它。输出来自HashMap。
我该如何解决这个问题?
提前致谢。
答案 0 :(得分:1)
我用过
throws FileNotFoundException
摆脱文件未找到的异常。
听着,使用throws
不要摆脱异常。
您需要捕获抛出的异常。但只要存在异常,就不能继续从那一点开始,直到您使用条件语句跳过该阶段。
try {
// code here
} catch (Exception e) {
// message here
}
UNIX OS和其他操作系统会将每个进程限制为一次要加载的多个文件。所以,我认为你在使用Reader或Scanner的地方需要关闭它们。
使用此
scanner.Close();
我不知道你的fileReader代码扫描程序。所以,你可以用它重新替换它。一旦您使用此代码,您已完成工作的文件将被关闭,并且它的链接将被关闭。这样就可以打开一个新文件了。
答案 1 :(得分:1)
import java.io. *; 公共课你好 {
public static void main(String[] args)
{
try
{
/*the File class uses a constructor File("absolute URI")
* example linux/OSX/Unix
* File("home/user/workspace/hello.txt);
*
* example Windows
* File("C:/Documents/hello);+
*/
File file = new File("/home/nirban/hello.txt");
FileOutputStream fis = new FileOutputStream(file);
PrintStream out = new PrintStream(fis);
System.setOut(out);
out.println("Hello this is my file");
out.close();
fis.close();
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
操作后需要关闭输入/输出流, 如果流未关闭,则JVM将文件保留在jvm进程中 检查LINUX文件是否存在
$ ps -e | grep java
(pid)? 00:03:42 java
$ lsof -p(pid)
这将列出JVM运行的所有文件和进程
谢谢,享受.................
答案 2 :(得分:0)
关闭FileOutputStream和PrintStream。它会解决你的问题。请尝试下面的代码
FileOutputStream fos = new FileOutputStream("output.txt");
PrintStream out = new PrintStream(fos);
System.setOut(out);
out.close();
fos.close();