문자열을 암호화하고 ByteArrayOutputStream
에 의해 뒷받침되는 CipherOutputStream
을 사용하여 바이트의 기본 배열에 암호화 된 바이트를 저장하려고하지만 ByteArrayOutputStream
개체의 크기는 0으로 유지되고 무언가가 CipherOutputStream
개체에 기록 된 후 아무런 문제가 없습니다. 여기에 코드가 있습니다. CipherOutputStream이 ByteArrayOutputStream에 쓸 수없는 이유는 무엇입니까?
ByteArrayOutputStream out = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
cos.flush();
out.flush();
System.out.println(out.size());
pw.close();
그래서 나는 아래의 코드를 사용하여
FileOutputStream
에
ByteArrayOutputStream
을 변경하여 비교를 만들기 위해 노력했다. 암호화 된 바이트가 대상 파일에 기록된다는 것이 밝혀졌습니다. 누구도 왜 여기에
ByteArrayOutputStream
을 사용할 수 없는지 알 수 있습니까? 해결책을 제안 할 수 있습니까? 종료 후 -
FileOutputStream out = new FileOutputStream("/path/encrypted.txt");
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
pw.close();
사용
는 여전히 비어 있습니다. 원래, 나는'PrintWriter'를 사용하지 않았지만'CipherOutputStream'에 직접 써서 같은 것을 만들어 냈습니다. 이것이 내가 너무 좌절 한 이유입니다. – gigadot
@gigadot : 어쨌든 내용을 확인하기 전에 스트림을 닫으려고 했습니까? – axtavt
예, 작동하지만 왜 작동합니까? 플러시 방법이 존재하는 이유는 무엇입니까? 어쨌든 감사합니다. – gigadot