我编写了一个加密应用程序,它将为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应用程序编写文件?
谢谢!
答案 0 :(得分: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
中。
答案 1 :(得分: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;
}
}