【问题标题】:Unable to access sdcard无法访问 SD 卡
【发布时间】:2026-02-08 19:25:02
【问题描述】:

我正在尝试将文件读/写到 sdcard。我已经尝试在我的真实手机和 eclipse 中的模拟器上执行此操作。在这两种设备上,/mnt/sdcard/ 或 /sdcard 的权限仅为“d--------”,我猜这意味着我无法读取或写入。

我无法从 Eclipse 中的“文件视图”打开文件夹,并且当我还尝试“adb pull /mnt/sdcard/test.txt test.txt”时,我得到远程对象不存在。

Android 应用确实拥有“WRITE_EXTERNAL_STORAGE”的权限。

这是我在运行应用程序时所做的示例;

        try {
            File root = Environment.getExternalStorageDirectory();
            Log.e(TAG,root.getAbsolutePath());
                File gpxfile = new File(root, "test.txt");
                FileWriter gpxwriter = new FileWriter(gpxfile);
                BufferedWriter out = new BufferedWriter(gpxwriter);
                out.write("Hello world");
                out.close();
        } catch (IOException e) {
            Log.e(TAG, "Could not write file " + e.getMessage());
        }

我没有遇到异常。 有任何想法吗?这个问题要死我了!

【问题讨论】:

  • I can't read or write 你是对的,你没有读写权限我也面临同样的问题。当时我无法存储在模拟器中,而是存储在手机设备中。我认为路径有问题让我看看 preivos 并给你解决方案

标签: android eclipse io sd-card


【解决方案1】:

这是一个示例,您可以在 sdcard 中从特定 url 显示图像,因此您需要... 的权限

权限::

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

Java 文件::

package com.sdcard;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;

public class SdcardActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try{
            URL url = new URL ("http://www.coolpctips.com/wp-content/uploads/2011/05/top-30-android-games.jpg");
            InputStream input = url.openStream();
            try {
                OutputStream output = new FileOutputStream  (Environment.getExternalStorageDirectory()+"/top-30-android-games.jpg");
                int aReasonableSize = 1000;
                byte[] buffer = new byte[aReasonableSize];
                int bytesRead = 0;;
                try {
                    while ((bytesRead = input.read(buffer)) > 0) {
                        output.write(buffer, 0, bytesRead);
                    }
                } finally {
                    output.close();
                }
            } finally {
                input.close();
            }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }

有时还会遇到设备问题,我们的互联网连接丢失或我们无法找到 sdcard

【讨论】: