繁体   English   中英

文件保存到内部存储器,而不是SD卡

[英]Files save to the internal storage, not to the SD card

我正在使用HTC Desire 610进行Android开发。 我按照相同问题的其他答案中的示例操作,但是我保存的所有文件最终都存储在内部设备存储中,而不是SD卡中。 手机绝对可以识别SD卡,并且可以从手机内部将文件传输到SD卡。

我尝试对SD卡的文件路径进行硬编码,并且还尝试在未插入计算机的情况下运行该应用程序-均无济于事。 我的应用程序能够将这些文件直接保存到SD卡中非常重要。 有任何想法吗?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    writeDataToFile("2394872934729348");

}


public void writeDataToFile(String data){
    BufferedWriter bufferedWriter = null;

    String dataOutFileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/data.txt";

    try{
        bufferedWriter = new BufferedWriter(new FileWriter(dataOutFileName,true));
        bufferedWriter.write(data);
        bufferedWriter.flush();
    }
    catch (IOException e){
        e.printStackTrace();
    }
    finally {
        try {
            if(bufferedWriter != null){
                bufferedWriter.close();
            }
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    MediaScannerConnection.scanFile(this,new String[]{dataOutFileName}, null,null);
}
}

编辑:我现在正在尝试。 我得到FileNotFoundException,除非我直接写到包文件(com.mypackage等)

    File dataDir = new File("/storage/ext_sd/Data/");
    dataDir.mkdirs();
    File outputFile = new File(dataDir,"data.txt");

    try{
        FileOutputStream fos = new FileOutputStream(outputFile);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
        outputStreamWriter.write(data);
        outputStreamWriter.close();

    }
    catch (IOException e){
        Log.e("Exception", "File write failed: " + e.toString());
    }

要访问外部存储上的私有存储目录​​,请使用getExternalFilesDirs() ,而不要使用getExternalStorageDirectory()。

它将返回一个数组,其中每个位置都有条目。 阵列中的第一个条目被视为主要的外部存储,除非该位置已满或不可用,否则应使用该位置。 有关详细说明,请参阅在Android API上使用外部存储指南。

您是否已在AndroidManifest.xml中为您的应用授予正确的权限? 如果尚未执行此操作,则需要在清单中添加以下行,以授予您的应用正确的写入SD卡的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

也许那是问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM