如何用Android应用程序编写文件?

时间:2013-03-30 00:35:54

标签: android file

我编写了一个加密应用程序,它将为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应用程序编写文件?

谢谢!

2 个答案:

答案 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;
    }
}