问题标签 [documentfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 无法在 SD 卡中的文件末尾附加字节 - Lollipop
我正在构建一个下载管理器来下载文件并将其保存到我的 SD 卡中。对于 API>=23,我必须使用FileOutputStream,它可以帮助我在下载失败时恢复文件。
但是,在 API 21 & API 22 (Lollipop) 中,不能写入 SD 卡,但可以在DocumentFile的帮助下完成。
我可以在 Lollipop 中创建文件和文件夹,但如果文件部分下载,则无法继续下载。我的代码如下:
它正在重写当前文件。我正在寻找处理 DocumentFile 中的附加模式。我已提供所有必需的权限。帮帮我,在此先感谢。
android - 如何以编程方式在 Android 中写入 DocumentFile?
Android API 有DocumentFile
类. 这个类有canWrite()
方法。
假设我调用了这个方法,它返回了true
. 还假设这个对象代表“原始”文件。
现在我该怎么做?
即,如何将“Hello world”文本写入该文件?
谢谢。
android - DocumentFile 重命名延迟
在我的应用程序中,我在 SD 卡上有原始文件,我使用 DocumentFile 在 SD 卡上创建临时文件,在那里写入一些数据,最后想用临时文件替换原始文件。使用 DocumentFile 我使用 DocumentFile 的 delete() 方法删除原始文件,然后使用 DocumentFile 的 renameTo() 方法将我的临时文件重命名为原始文件。两种方法都以结果 == true 完成,但在这大约 5-10 秒后,我在文件浏览器中看到了我的原始文件的旧版本。如果我根据被替换的原始文件方法的文件路径创建简单的文件对象,则 length() 将返回它之前版本的大约 5-10 秒长度。这种延迟从 Android M 开始就出现了。在 Android L 中没有这样的问题。自 Android M 以来,在使用 DocumentFile 导致这种效果时是否有任何限制?
android - 如何将 FLAG_SUPPORTS_MOVE 设置为文档?
最后我发现要移动Document
我需要(以某种方式)设置FLAG_SUPPORTS_MOVE
的实例。但是Document
类没有任何setFlag()
或其他方法。我尝试将标志设置为 URI,getContentResolver().takePersistableUriPermission()
但 IDE 警告我使用了注释未指定的其他标志。我只想将所有文件从一个文件夹移动到 25 API 上的另一个文件夹。
android - Android:如何获得可移动 sd 卡的永久写入权限?
我最近几天浏览了存储访问框架,但仍然没有得到它。
我的问题是:如何在选择 sd 卡位置后在没有提示选择路径的情况下在 sd 卡上创建具有这些权限的文件?
我可以在我的 sd 卡上选择一个路径,以便在那里使用以下代码创建一个文件。(这样可行)
在 onActivityResult 我做
android - DocumentFile:创建特定目录名称的问题
我有一个应用程序必须在可移动 sdcard 上创建文件和目录。我使用DocumentFile API。在大多数情况下,它可以工作:) 但我发现一个案例不起作用(至少在三星 GS7 上):
我无法创建名为“ REM ”(不带引号)的目录。
测试用例:我在目录“/storage/9C33-6BBD/Xxxx”中工作,我想创建目录“REM”
这将显示“成功”,所以我很高兴。后来我想在这个目录中创建一个文件:“REM/myfile”。
这将显示“失败:REM 不存在”
所以我用 DocumentFile.listFiles 列出文件并查看:“REM”(最后一个 DOT 消失了!)
如果我这样做(new File("/storage/9C33-6BBD/Xxxx/R.E.M.")).exists()
,它会返回 true !
如果我看一下“adb shell”
有谁知道我在哪里可以找到有关目录 displayName 限制的文档?
谢谢 :)
android - 三星 Galaxy S7 上加密的可移动 SD 卡上的 DocumentFile API 是否损坏?
我在UNENCRYPTED 可移动 SD 卡的根文件夹上创建了一个零大小的文件 aaa.txt。当我使用DocumentFile#listFiles()列出根文件夹中的所有条目时,文件 aaa.txt 的大小正确为 0 字节。
如果我从“设置”->“锁定屏幕和安全选项”->“加密 SD 卡”加密可移动 SD 卡并再次调用 DocumentFile#listFiles(), 我得到大小 8192 字节!
正如我认为 DocumentFile API 应该向我显示加密和未加密情况的相同大小。设备型号三星 Galaxy S7,搭载 Android 7.0。
android - 从可移动存储上的文档文件中获取的 Action_View uri 无法播放视频文件
我可以通过 action_open_document 树将我的文件放在可移动存储上,它给了我一个文档文件。我无法使用 Action_view 打开此文件。文档文件中的 URI 确实有效!我可以用动作视图打开图像文件。
java - 使用 OutputStream 写入 DocumentFile:数据似乎已写入,但文件最终为空
应用程序KDE Connect允许通过 SFTP 从台式计算机远程浏览 Android 设备。从 Android 4.4 开始,开发人员不再直接通过文件系统对 SD 卡进行写入权限。所以我正在尝试使用存储访问框架(DocumentFile 等)移植 SFTP 模块
我正在使用 and 获得许可,Intent.ACTION_OPEN_DOCUMENT_TREE
并将FLAG_GRANT_WRITE_URI_PERMISSION
上下文传递给我的班级。
我能够在班级内的 SD 卡上创建新的空文件、重命名文件和删除文件,因此我相信我获得了必要的权限。但是,传输文件会导致创建一个空文件(0 字节)。我可以看到传输需要一定的时间,并且在桌面端有一个进度条,所以它不仅仅是中止。
这是来自 Apache SSHD 库的 SftpSubsystem 类的相关部分(请参阅此处的文档),并附有我自己的评论来解释发生了什么:
我想重写的 createOutputStream() 的原始实现,因为 RandomAccessFile 不适用于 DocumentFile:
我尝试实现它的方法之一:
我也尝试了一个简单的(偏移被忽略,但这只是一个测试):
我还尝试使用 FileChannel 并刷新和同步 FileOutputStream。
知道为什么我最终得到一个空文件吗?
编辑:这是一个小例子,我只是从现有文件中写入一个新文件。它有效,但这不是我真正想要做的(参见上面的代码),但我想我会提供一个示例来表明我了解如何写入 OutputStream 的基础知识。