请我对以下代码有疑问
public String encrypt(String fileToEncrypt) throws Exception{
_cipher.init(Cipher.ENCRYPT_MODE, _keyPair.getPublic());
File inputfile = new File(fileToEncrypt);
File outputfile = new File("C:/SECUREFILE".concat("/").concat(FilenameUtils.getName(fileToEncrypt)));
FileInputStream inputstream = new FileInputStream(inputfile);
FileOutputStream outputStream = new FileOutputStream(outputfile, false);
CipherOutputStream cos = new CipherOutputStream(outputStream, _cipher);
IOUtils.copy(inputstream, cos);
IOUtils.closeQuietly(inputstream);
IOUtils.closeQuietly(cos);
return outputfile.getPath();
}
问题是写入磁盘的结果文件总是0kb。请问我做错了什么
答案 0 :(得分:0)
使用IOUtils.closeQuietly(inputstream)和IOUtils.closeQuietly(cos);关闭流,它应该工作 以下代码对我有用
public static void main(String[] args) throws Exception {
encrypt(new Scanner(System.in).next());
}
public static String encrypt(String fileToEncrypt) throws Exception{
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey _keyPair = kgen.generateKey();
Cipher _cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
_cipher.init(Cipher.ENCRYPT_MODE, _keyPair);
File inputfile = new File(fileToEncrypt);
File outputfile = new File("D:/SECUREFILE".concat("/").concat(FilenameUtils.getName(fileToEncrypt)));
FileInputStream inputstream = new FileInputStream(inputfile);
FileOutputStream outputStream = new FileOutputStream(outputfile, false);
CipherOutputStream cos = new CipherOutputStream(outputStream, _cipher);
IOUtils.copy(inputstream, cos);
IOUtils.closeQuietly(inputstream);
IOUtils.closeQuietly(cos);
return outputfile.getPath();
}
输入文件内容:dfsdafdsfasdfsadfs
输出文件内容:-X‰8q'4ÆZ€'®!‡tÈérë/ű¤®v'rË