[英]Java android fileinputstream fileoutputstream issue
我需要一個小問題。如何修復該代碼,以便我也可以在android中使用它。我只需要從android projet的Assets文件夾中加載文件,解密並顯示文件的大小以及需要多長時間給應用程序解密。
代碼:
package decryption;
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class Decryption {
public static void main(String args[]) throws Exception {
File file = new File("ecryption.pdf");
System.out.println(file.getAbsolutePath());
System.out.println("user.dir is: " + System.getProperty("user.dir"));
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
FileInputStream fis = new FileInputStream(new File("ecrypted.pdf"));
long start = System.currentTimeMillis();
System.out.print(start+" ");
CipherInputStream cis = new CipherInputStream(fis, cipher);
FileOutputStream fos = new FileOutputStream(new File("decrypted.pdf"));
long end = System.currentTimeMillis();
System.out.print(end);
byte[] b = new byte[8];
int i;
while ((i = cis.read(b)) != -1) {
fos.write(b, 0, i);
}
fos.flush(); fos.close();
cis.close(); fis.close();
}
}
// File file = new File("ecryption.pdf");
// System.out.println(file.getAbsolutePath());
// System.out.println("user.dir is: " + System.getProperty("user.dir"));
// FileInputStream fis = new FileInputStream(new File("ecrypted.pdf"));
InputStream fis = getAssets().open("ecryption.pdf");
// FileOutputStream fos = new FileOutputStream(new File("decrypted.pdf"));
FileOutputStream fos = new FileOutputStream(
new File(Environment.getExternalStorageDirectory(), "decrypted.pdf"));
然后,您需要編譯和調整其余部分。
這將一次復制一個文件...從那里開始。
public void copyAssets() {
try {
in = getAssets().open("aabbccdd.mp3");
File outFolder = new File(root.getAbsolutePath() + "/testfolder182");
outFolder.mkdir();
File outFile = new File(outFolder, "ooooooooohhhigetit.mp3");
out = new FileOutputStream(outFile);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (IOException e) {
Log.e("tag", "Failed to copy asset file: ", e);
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.