2011-10-02 30 views
1

我是Android编程的新手,为我的毕业论文编写我的第一个应用程序。 现在我几乎完成了,但还剩一件事,我无法在网上的任何地方得到答案。所以也许这里有人可以帮忙。如何将数据写入文件并从应用程序外部访问(无SD卡)?

我的应用程序必须做的一部分是将以前操作的结果写入可自由访问的文件以供日后分析。 所以我走到这一步,是我能够写一个文件到SD卡用下面的代码:

String packageName = this.getClass().getPackage().getName(); 
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/Android/data/" + packageName + "/files/"; 
if (isExternalStorageAvailable() && isExternalStorageWritable()) 
{ 
    String filename = "_results.dat"; 

    boolean exists = (new File(path)).exists(); 
    if (!exists) 
    { 
     new File(path).mkdirs(); 
    } 
    // Open output stream 
    FileOutputStream fOut = new FileOutputStream(path + filename,true); 

    fOut.write("lalala".getBytes()); 
     etc. 
    } 

public static boolean isExternalStorageAvailable() 
{ 
    // Retrieving the external storage state 
    String state = Environment.getExternalStorageState(); 

    // Check if available 
    if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) 
    { 
     return true; 
    } 

    return false; 
} 


public static boolean isExternalStorageWritable() 
{  
    // Retrieving the external storage state 
    String state = Environment.getExternalStorageState(); 

    // Check if writable 
    if (Environment.MEDIA_MOUNTED.equals(state)) 
    { 
     return true; 
    } 

    return false; 

} 

该文件以后可以访问,复制,等等。就像我想要的那样。现在的实际问题是:

有没有办法实现这一目标,而不在手机的SD卡?或者我只能写入“应用程序内存”(这不能满足我的需求)? 我只问,因为目前还没有SD卡在我要部署应用程序的手机中。我们必须决定是否必须'升级'设备:)。

+0

SD卡或其他外部存储是非常普遍的Android手机。如果不知道,我会说,所有Android手机中的90%都有外部存储。 –

回答

1

那么如果你想避免让他们升级与SD卡的手机,检查出this链接。它说,写入内部存储的文件都不会被其他应用程序访问,但如果你读,你可以设置其他标志:

MODE_PRIVATE将创建文件(或替换同名文件) 和使其对您的应用程序保密。其他可用模式包括: MODE_APPEND,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。