android APP 在手机存储卡里读写“.xls”文件的问题?

在我的手机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);
                }

备注:

  1. 我通过以上类似代码将sf.xls在手机mainasset与File(getFilesDir())这两个地方 ,复制,读写,保存“.xls”文件都成功。
  2. 对于以上代码需要的存储卡权限,已经在manifest中部属。
<?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());
}