Я пытаюсь сделать программу, которая проходит через текстовый файл и учитывает использование слов в Java, используя Eclipse. Программа работает, но я хочу сохранить выходные значения в текстовом файле. Я использую этот бит кода для этого:
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)
Я создал файл output.txt в проекте java, поэтому не знаю, почему программа не может его найти. Выход из HashMap.
Как это исправить?
Заранее спасибо.
import java.io. *; public class Hello {
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
Спасибо и наслаждайтесь.................
я использовал
throws FileNotFoundException
чтобы избавиться от не найденного исключения.
Слушайте, используя throws
не избавляйтесь от Excetion.
Вам нужно поймать заброшенное исключение. Но пока существует исключение, вы не можете продолжать с этого момента, пока вы не пропустите этот этап, используя условную инструкцию.
try {
// code here
} catch (Exception e) {
// message here
}
ОС UNIX и такая другая ОС ограничивали бы каждый процесс несколькими файлами, которые будут загружаться за раз. Итак, я думаю, где вы используете Reader или Scanner, вам нужно закрыть их.
Использовать это
scanner.Close();
Я не знаю вашего сканера кода fileReader. Таким образом, вы можете повторить это. После того, как вы используете этот код, файл, с которым вы закончили работу, будет закрыт, и ссылка на него будет закрыта. Таким образом, вы можете открыть новый файл.
Закройте FileOutputStream и PrintStream. Это решит вашу проблему. Попробуйте ниже код
FileOutputStream fos = new FileOutputStream("output.txt");
PrintStream out = new PrintStream(fos);
System.setOut(out);
out.close();
fos.close();