Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在android中保存文件_Android_File_Sd Card - Fatal编程技术网

无法在android中保存文件

无法在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

你好

我需要将PKCS10 CSR保存在外部存储卡中

但是,下面的代码显示了一个错误

java.io.FileNotFoundException:/storage/sdcard0pkcs10.req:open失败:EROFS(只读文件系统)

而AndoidManifest.xml正确地包括

我觉得问题在于目录路径,因为它显示的是0而不是/

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);