not true.
If the device HAS an external sdcard then you need to use usbstorage class.
DirRootExternal points to the secondary storage which is an internal SDKCard. You can access it using runtimepermission.
There are changes in targetSdkVersion 29 however you will be able to opt out of these changes with the requestLegacyExternalStorage property, at least in the next year or so.
You will also be able to access it with ExternalStorage though it will be more cumbersome.
There isn't any other local place that you can store data that will not be deleted.