1

我编写了一个加密应用程序,它将为 RSA 生成一个公钥对。私钥需要保存在设备上。在使用普通 java 应用程序进行测试时,生成了密钥,然后使用以下内容保存到文件中:

public static void saveToFile(String fileName,BigInteger mod, BigInteger exp) throws IOException
   {
    ObjectOutputStream oout = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName)));
        try
        {
                oout.writeObject(mod);
                oout.writeObject(exp);
        }

        catch (Exception e)
        {
                throw new IOException("Unexpected error", e);
        }

        finally
        {
                oout.close();
        }
}

密钥文件将出现在项目目录中。但是,对于 android 应用程序,这不会发生。如何使用 android 应用程序编写文件?

谢谢!

4

2 回答 2

2

密钥文件将出现在项目目录中。但是,对于 android 应用程序,这不会发生。如何使用 android 应用程序编写文件?

在 Android 中,您的应用程序只有两个主要的地方可以写入文件:私有内部存储目录和外部存储卷。您要做的不仅仅是提供文件名,还必须提供包含这些位置的完整路径。

//Internal storage location using your filename parameter
File file = new File(context.getFilesDir(), filename);

//External storage location using your filename parameter
File file = new File(Environment.getExternalStorage(), filename);

不同之处在于内部存储只能由您的应用访问;如果您通过 USB 连接和安装存储,则可以从任何地方读取/写入外部存储,包括您的 PC。

然后,您可以将适当的文件包装在FileOutputStream现有代码中。

于 2013-03-30T00:42:27.287 回答
0

首先通过您调用的主类作为方法:

Boolean writfile;
writfile =savTextFileInternal(this.getApplicationContext(),"Maa","Ambika");
Toast.makeText(this, "File write:"+writfile, Toast.LENGTH_LONG).show();

创建一个这样的方法:

public boolean savTextFileInternal(Context context,String sFileName, String sBody)
{
    try
    {
        File root = new File(context.getFilesDir(),"myfolder");

        if (!root.exists()) {
            root.mkdirs();
        }

        File gpxfile = new File(root, sFileName);
        FileWriter writer = new FileWriter(gpxfile);
        writer.append(sBody);
        writer.flush();
        writer.close();
        return  true;  
    }
    catch(IOException e)
    {
        e.printStackTrace();
        return false;
    }
}
于 2016-11-24T14:37:08.613 回答