相关疑难解决方法(0)

Android将文件保存到外部存储

我有一个问题,在我的Android应用程序上创建一个目录并将文件保存到它.我正在使用这段代码来执行此操作:

String filename = "MyApp/MediaTag/MediaTag-"+objectId+".png";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos;

fos = new FileOutputStream(file);
fos.write(mediaTagBuffer);
fos.flush();
fos.close();
Run Code Online (Sandbox Code Playgroud)

但这是一个例外:

java.io.FileNotFoundException:/mnt/sdcard/MyApp/MediaCard/MediaCard-0.png(没有这样的文件或目录)

在那条线上: fos = new FileOutputStream(file);

如果我将文件名设置为:"MyApp/MediaTag-"+objectId+"它正在工作,但如果我尝试创建并将文件保存到另一个目录,则会抛出异常.那么任何想法我做错了什么?

还有一个问题:有没有办法让我的文件在外部存储中保密,这样用户就无法在图库中看到它们,只有当他连接他的设备时Disk Drive

storage android file external

82
推荐指数
4
解决办法
24万
查看次数

Android写入SD卡文件夹

我使用以下代码从我的服务器下载文件,然后将其写入SD卡的根目录,一切正常:

package com.downloader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Environment;
import android.util.Log;

public class Downloader {

    public void DownloadFile(String fileURL, String fileName) {
        try {
            File root = Environment.getExternalStorageDirectory();
            URL u = new URL(fileURL);
            HttpURLConnection c = (HttpURLConnection) u.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();
            FileOutputStream f = new FileOutputStream(new File(root, fileName));

            InputStream in = c.getInputStream();

            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = in.read(buffer)) > 0) {
                f.write(buffer, 0, len1);
            }
            f.close();
        } …
Run Code Online (Sandbox Code Playgroud)

java android http download android-sdcard

80
推荐指数
2
解决办法
17万
查看次数

如何使用buildChildDocumentsUriUsingTree过滤查询结果

我想将文件保存在SD卡文件夹中.

我不能在我的项目上使用V4支持.

所以我打电话给:

Intent itent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
itent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
itent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(itent, requestCodeTree);
Run Code Online (Sandbox Code Playgroud)

然后在onActivityResult上,我有:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    if (resultCode == RESULT_OK) {
        switch(requestCode) {
            case requestCodeTree:
                saveFile(intent.getData());
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而saveFile的代码是:

   private void saveFile(Uri data) {
        ContentResolver contentResolver = context.getContentResolver();

        InputStream in = null;
        OutputStream out = null;

        try {

            // Problems start here ************************
            Uri toUriFile= getUriBackupFile(context, data);
            // ********************************************

            if (toUriFile==null) {
                Uri toUriFolder = DocumentsContract.buildDocumentUriUsingTree(data, DocumentsContract.getTreeDocumentId(data));
                toUriFile …
Run Code Online (Sandbox Code Playgroud)

android file save sd-card

6
推荐指数
1
解决办法
186
查看次数

从URL下载图像到SD卡

我正在尝试创建一个非常简单的图像下载应用程序.我想从这个网址下载所有图像到SD卡:https://www.dropbox.com/sh/5be3kgehyg8uzh2/AAA-jYcy_21nLBwnZQ3TBFAea

此代码适用于在imageview中加载图像:

package com.example.imagedownloadsample;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

public class MainActivity extends ActionBarActivity {

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

        final ImageView img = (ImageView) (findViewById(R.id.imageView1));

        // File file = new File(Environment.getExternalStorageDirectory(),
        // "Android/data/com.usd.pop");

        Picasso.with(getApplicationContext())
                .load("http://8020.photos.jpgmag.com/3456318_294166_528c960558_m.jpg")
                .into(img);

    }

}
Run Code Online (Sandbox Code Playgroud)

但当我尝试这样下载图像到SD卡我最终与不幸的应用程序停止错误:

package com.example.imagedownloadsample;

import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;

import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;

public class MainActivity extends ActionBarActivity {

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

        //final ImageView img = (ImageView) …
Run Code Online (Sandbox Code Playgroud)

android http download android-internet

5
推荐指数
3
解决办法
3万
查看次数

在外部存储中创建新文件的权限被拒绝

如果该文件不存在,我想在外部存储中创建一个新文件。我已经在 SO 中阅读了类似的问题,并WRITE_EXTERNAL_STORAGE在我的清单中获得了许可。在使用 android 5.1 和 xperia t 使用 android 4.3 的 GenyMotion 模拟器上测试结果是一样的,我得到“打开失败:EACCES(权限被拒绝)file.createNewFile()。我检查了运行时,getExternalStorageStatefunctoin 返回值是 "MOUNTED "

注意:如果我手动创建文件,我的代码可以完美运行并读取内容,这意味着可以访问外部存储。我虽然在我的代码中的另一个地方写入外部存储getExternalPublicStorage用于保存捕获的图像,但它工作正常!

File f = Environment.getExternalStorageDirectory();
File config = new File(f, "poinila config" + ".txt");
if (!config.exists()) {
    if (!config.createNewFile()) {
        // toast that creating directory failed
    } else {
        writeDefaultIpPort();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 路径字符串是“/storage/sdcard0/poinila config.txt”

android android-external-storage

5
推荐指数
1
解决办法
5769
查看次数

如何访问/读取/写入Android设备上内部存储中的Documents文件夹?

如何访问Android手机内部存储空间中的公共文档文件夹?我需要读取和写入可公开访问的文件到Documents文件夹中.

c# android xamarin.android xamarin xamarin-studio

4
推荐指数
2
解决办法
1万
查看次数

如何在android上的外部存储上写文件到文件?

将一些文本写入Android设备上的文件似乎是一项重大努力.从这里给出的答案开始,我已将以下代码实现到我的单个"Hello-World"活动中:

try {
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.openFileOutput("config.txt", Context.MODE_PRIVATE));
    outputStreamWriter.write("lalala");
    outputStreamWriter.close();
} catch (IOException e) {
    Log.e("Exception", "File write failed: " + e.toString());
}
Run Code Online (Sandbox Code Playgroud)

这不会引发异常,但似乎有效.但有没有办法"看到"使用File Manageron android 创建的文件?代码片段似乎写入android文件系统上与应用程序本身相关的"秘密"位置(由using控制this.openFileOutput).

咨询不同的谷歌链接(这个 和这个 和这个)我想出以下代码:

File file = new File(this.getExternalFilesDir("temp"), "testfile.txt");
FileOutputStream fileOutput = openFileOutput(file.getName(), Context.MODE_WORLD_WRITEABLE);
fileOutput.write("lalala");
fileOutput.close();
Run Code Online (Sandbox Code Playgroud)

这会引发错误

Error:(55, 19) error: no suitable method found for write(String) method FileOutputStream.write(int) is not applicable (actual argument String cannot be converted to int by method invocation conversion) method …
Run Code Online (Sandbox Code Playgroud)

java android

2
推荐指数
1
解决办法
4686
查看次数