无法在android中保存文件
你好 我需要将PKCS10 CSR保存在外部存储卡中 但是,下面的代码显示了一个错误 java.io.FileNotFoundException:/storage/sdcard0pkcs10.req:open失败:EROFS(只读文件系统) 而AndoidManifest.xml正确地包括 我觉得问题在于目录路径,因为它显示的是0而不是/无法在android中保存文件,android,file,sd-card,Android,File,Sd Card,你好 我需要将PKCS10 CSR保存在外部存储卡中 但是,下面的代码显示了一个错误 java.io.FileNotFoundException:/storage/sdcard0pkcs10.req:open失败:EROFS(只读文件系统) 而AndoidManifest.xml正确地包括 我觉得问题在于目录路径,因为它显示的是0而不是/ package exam.blowfishcipher; import java.io.FileWriter; import java.io.OutputS
package exam.blowfishcipher;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.security.*;
import org.spongycastle.jce.provider.BouncyCastleProvider;
import java.security.SecureRandom;
import javax.security.auth.x500.X500Principal;
import org.spongycastle.jce.PKCS10CertificationRequest;
import org.spongycastle.openssl.PEMWriter;
import android.os.Environment;
import android.util.*;
import android.widget.*;
public class PKCS10Generater
{
static {
Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
}
public static PKCS10CertificationRequest generateRequest(
KeyPair pair)
throws Exception
{
return new PKCS10CertificationRequest(
"SHA256withRSA",
new X500Principal("CN=Test CA Certificate"),
//new X500Principal("CN=end"),
pair.getPublic(),
null,
pair.getPrivate());
}
public static void pemEncodeToFile(String filename, Object obj, char[] password) throws Exception{
PEMWriter pw = new PEMWriter(new FileWriter(filename));
Log.e("Position", "PEMWriter");
if (password != null && password.length > 0) {
pw.writeObject(obj, "DESEDE", password, new SecureRandom());
} else {
pw.writeObject(obj);
}
pw.flush();
pw.close();
}
public static void reqGen() throws Exception
{
//create the keys
Log.e("Position", "reqGen");
KeyPair pair = Utils.generateRSAKeyPair();
//modified 20130203
PKCS10req pkcs10req = new PKCS10req();
PKCS10CertificationRequest request = pkcs10req.generateRequest(pair);
pemEncodeToFile(Environment.getExternalStorageDirectory()+"pkcs10.req", request, null);
Log.e("Position", "getExternalStorage");
PEMWriter pemWrt = new PEMWriter( new OutputStreamWriter(System.out));
pemWrt.writeObject(request);
pemWrt.close();
}
}
只需修改行
pemEncodeToFile(Environment.getExternalStorageDirectory()+"pkcs10.req", request, null);
到
您是否具有正确的写入\u外部\u存储权限?否则,该设备实际上无法允许您写入外部存储…如果您在清单中拥有正确的权限,您是否可以使用“adb外壳”检查您是否可以写入该文件夹?如果您没有写入权限,请尝试使用代码写入另一个文件。错误显示路径:/storage/sdcard0pkcs10.req,所以我不认为它漏掉了“/”
pemEncodeToFile(Environment.getExternalStorageDirectory()+"/pkcs10.req", request, null);