Это потому, что FileInputStream не обеспечивает создание файла во время инициализации, как new FileOutputStream()
. Поэтому, если они были сказаны, мы можем помнить одну интересную вещь: ification.txt будет создаваться каждый раз, когда вы инициализируете FileOutputStream
(а не будет перезаписать) и вот почему, скорее всего, ваш код разрывается на строку new FileInputStream()
.
Как вы можете обработать ваше исключение? Вы либо создаете свой файл перед выполнением кода (вручную с помощью New
-> Text Document
et c.), Либо изменяете свой код и используете класс File
:
File file = new File("modification.txt");
try {
file.createNewFile();
input = new FileInputStream(file);
//your code here - output etc.
Ваш код все еще не работает, даже если у вас есть файлы, созданные в той же папке пакета? Это потому, что по умолчанию ваши потоки ищут ваши файлы - это текущий рабочий каталог. Вот пример:
myproject
|___src
| |___main
| |___java
| |___io
| |___implementIo
|___writeModification.txt
|___modification.txt
Это правильная структура, если вы хотите использовать потоки, как вы (с простым именем файла в аргументе конструктора потока). Но если ваших файлов там нет, вы должны указать абсолютный путь. Вот пример:
myproject
|___src
|___main
|___java
|___io
|___implementIo
|___writeModification.txt
|___modification.txt
И правильный способ доступа к файлам такой:
FileInputStream input = new FileInputStream("C://myproject//src//main//java//io//modification.txt");
То же самое для выходного потока. (Пожалуйста, измените путь, указав правильное местоположение файла)