[英]Writing and Reading Files in java gives unexpected results
请我对以下代码有疑问
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。 请问我在做什么错
使用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Ë
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.