繁体   English   中英

用Java编写和读取文件会产生意外结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM