gpt4 book ai didi

java - 无法在 SD 卡中创建文件

转载 作者:行者123 更新时间:2023-12-01 09:25:39 25 4
gpt4 key购买 nike

我对 Android 开发非常陌生。在此项目中,我尝试创建一个 JSON 对象,然后想要将该 JSON 对象写入 SD 卡中的文件中,但出现以下异常:W/System.err:java.io.FileNotFoundException:/storage/emulated/0/avinash1.json:打开失败:EACCES(权限被拒绝)尽管我什至在 list 中添加了用户权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.raviteja.youexample">

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


<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

package com.example.raviteja.youexample;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

public class MainActivity extends AppCompatActivity {


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


JSONObject obj = new JSONObject();

try {
obj.put("age", new Integer(100));
obj.put("name", "Ravi");
} catch (JSONException e) {
e.printStackTrace();
}

JSONArray list1 = new JSONArray();
JSONObject pnObj = new JSONObject();
try {
pnObj.put("num", "99009900");
pnObj.put("type", "mhgchmc");
list1.put(pnObj);
obj.put("phoneNumber", list1);

} catch (JSONException e) {
e.printStackTrace();
}

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath());
dir.mkdirs();
File file = new File(dir, "avinash1.json");

try {
FileOutputStream f = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(f);
pw.println(obj.toString());
pw.flush();
pw.close();
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

最佳答案

您应该尝试使用以下命令获取公共(public)目录:getExternalStoragePublicDirectory(): android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)

不过,如果您想保留该信息并且不让任何其他应用程序接触它,您应该将其保存在您的应用程序 InteralStorage 中。快速教程在这里:http://www.tutorialspoint.com/android/android_internal_storage.htm

关于java - 无法在 SD 卡中创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com