gpt4 book ai didi

java - 自 API 28 起无法写入文件

转载 作者:行者123 更新时间:2023-12-01 23:18:26 24 4
gpt4 key购买 nike

我将一些日志写入文件,因为 API 28 我收到权限错误,权限“android.permission.WRITE_EXTERNAL_STORAGE”和“android.permission.READ_EXTERNAL_STORAGE”是grandet。我能做什么?

public static void writeToFile(StringWriter data)
{

final File path =
Environment.getExternalStoragePublicDirectory
(
//Environment.DIRECTORY_PICTURES
Environment.DIRECTORY_DOCUMENTS + "/test"
);


if(!path.exists())
{

path.mkdirs();
}

final File file = new File(path, ERROR_FILE);



try
{

if(!file.exists()){
file.createNewFile();

}

Date currentTime = Calendar.getInstance().getTime();
FileWriter fw = new FileWriter(file,true);
fw.write(currentTime+" "+"\n");
fw.write(data.toString());
fw.close();

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

最佳答案

如果您使用的 api 级别 >= 28,则会添加一个新的权限属性,用于通过 android 访问存储,您将在 list 中添加该属性,并且不要忘记向 list 添加读写权限。

<manifest >
<application android:requestLegacyExternalStorage="true" >
...
</application>
</manifest>

将文件路径更改为此,

File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);

然后创建文件,

public static void createFile(){
try {
File file = new File(dir, "example.txt");
if(!file.exists()){
file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
}

如果你想写入文件,

//Write to file
try (FileWriter fileWriter = new FileWriter(file)) {
fileWriter.append("Writing to file!");
} catch (IOException e) {
//Handle exception
}

希望这有帮助

谢谢。

关于java - 自 API 28 起无法写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58340037/

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