簡體   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