在我的手机APP里已经存在文件sf.xls, 我想通过如下代码将sf.xls这个文件复制到手机存储卡中(手机是华为mate30),但无法成功,请指点一下,谢谢!
try{
Workbook wb1 = Workbook.getWorkbook(new File(getFilesDir(),"sf.xls"));
WritableWorkbook book1 = Workbook.createWorkbook(new File(getExternalStorageDirectory(),"sf1111.xls"),wb1);
book1.write();
book1.close();
wb1.close();
}
catch (Exception e) {
System.out.println(e);
}
备注:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.cpazhan">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="税法"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
你的项目构建版本应该大于6.0了吧, ,你要获取在sd卡操作就必须动态申请存储权限,具体流程里百度,
最好贴出错误日志
多说一点.app相关的文件要存放到sd目录最好存放在该应用的私有目录下
,你这个复制到内存卡的目的是干啥?如果是为了用其他第三方app打开的话,那你应该去设置她的ContentProvider,而不是这样复制到sd根目录来规避权限
Workbook类好像是用来读取excel数据用得,如果只是单纯的复制文件可以直接使用copy()或者输入输出流就行了啊,当然前提是加入权限
File oldpaths = new File(oldpath + "/" + filename);
File newpaths = new File(newpath + "/" + filename);
if (!newpaths.exists()) {
Files.copy(oldpaths.toPath(), newpaths.toPath());
} else {
newpaths.delete();
Files.copy(oldpaths.toPath(), newpaths.toPath());
}