Потоки созданы и закрыты, файлы шифруются и дешефруются, что не так?
package com.javarush.task.task18.task1826;
/*
Шифровка
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String key;
if (args.length != 0) {
FileInputStream inputStream = new FileInputStream(args[1]);
FileOutputStream outputStream = new FileOutputStream(args[2]);
switch (args[0]) {
case "-e": {
System.out.println("Введите ключ:");
key = reader.readLine();
key = key.toLowerCase();
byte[] keyBuf = key.getBytes();
if (inputStream.available() > 0) {
byte[] buf = new byte[inputStream.available()];
inputStream.read(buf);
for (int i = 0; i < buf.length; i = i + keyBuf.length) {
for (int j = 0; j < keyBuf.length; j++) {
boolean inBounds = (i + j >= 0) && (i + j < buf.length);
if (inBounds) {
buf[i + j] = (byte) (buf[i + j] + keyBuf[j]);
}
}
}
outputStream.write(buf);
}
break;
}
case "-d": {
System.out.println("Введите ключ:");
key = reader.readLine();
key = key.toLowerCase();
byte[] keyBuf = key.getBytes();
if (inputStream.available() > 0) {
int a = (int) new File(args[1]).length();
byte[] buf = new byte[inputStream.available()];
inputStream.read(buf);
for (int i = 0; i < buf.length; i = i + keyBuf.length) {
for (int j = 0; j < keyBuf.length; j++) {
boolean inBounds = (i + j >= 0) && (i + j < buf.length);
if (inBounds) {
buf[i + j] = (byte) (buf[i + j] - keyBuf[j]);
}
}
}
outputStream.write(buf);
}
}
break;
default:
break;
}
inputStream.close();
outputStream.close();
}
// int[] buf = new int[11];
// for (int i = 0; i < buf.length; i++) {
// buf[i] = i+1;
// System.out.print(buf[i]+" ");
// }
// System.out.println("\n");
// int[] keyBuf = {1,2,3};
// for (int i = 0; i<buf.length; i+=3 ){
// for (int j = 0; j < 3; j++) {
// boolean inBounds = (i+j >= 0) && (i+j < buf.length);
// if(inBounds){
// buf[i+j] = (buf[i+j]+keyBuf[j]);
// }
// }
// }
// for(int a : buf)
// System.out.print(a+" ");
//
// for (int i = 0; i<buf.length; i+=3 ){
// for (int j = 0; j < 3; j++) {
// boolean inBounds = (i+j >= 0) && (i+j < buf.length);
// if(inBounds){
// buf[i+j] = (buf[i+j]-keyBuf[j]);
// }
// }
// }
// System.out.println("\n");
// for(int a : buf)
// System.out.print(a+" ");
}
}
//C:\Users\Gagarin\Desktop\javaRush\JRTest1.txt