android11以上遍历文件,并挑选出文件类型.txt、.doc、.docx、.pdf、.ppt、.pptx、.xls、.xlsx的文件,并使用lod.d打印文件内容
时间: 2023-07-10 16:14:11 浏览: 577
Android解析并显示doc,docx,xls,xlsx文件
5星 · 资源好评率100%
好的,我可以帮你回答这个问题。首先需要获取到android11以上的存储权限,然后使用Storage Access Framework(SAF)来遍历文件。接着,我们可以使用DocumentFile API来过滤出指定类型的文件,最后使用lod.d来打印文件内容。
以下是一个示例代码:
```java
// 获取存储权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return;
}
// 打开SAF文件选择器
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, 2);
// 在onActivityResult中处理文件选择结果
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && resultCode == RESULT_OK) {
Uri treeUri = data.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
// 遍历文件并打印
for (DocumentFile file : pickedDir.listFiles()) {
String fileName = file.getName();
if (fileName.endsWith(".txt") || fileName.endsWith(".doc") || fileName.endsWith(".docx") || fileName.endsWith(".pdf") || fileName.endsWith(".ppt") || fileName.endsWith(".pptx") || fileName.endsWith(".xls") || fileName.endsWith(".xlsx")) {
try {
InputStream inputStream = getContentResolver().openInputStream(file.getUri());
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
Log.d("FileContents", stringBuilder.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
```
请注意,上述代码仅供参考,并且可能需要根据您的实际需求进行调整。
阅读全文