android11以上遍历文件,并挑选出文件类型.txt、.doc、.docx、.pdf、.ppt、.pptx、.xls、.xlsx的文件,并使用lod.d打印文件内容

时间: 2023-07-10 17:14:11 浏览: 53
好的,我可以帮你回答这个问题。首先需要获取到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(); } } } } } ``` 请注意,上述代码仅供参考,并且可能需要根据您的实际需求进行调整。

相关推荐

抱歉,作为AI语言模型,我无法下载和操作文件。我可以提供一些Java代码,帮助您在程序中读取和写入docx文件的内容。 读取docx文件: java import java.io.FileInputStream; import org.apache.poi.xwpf.usermodel.*; public class ReadDocxFile { public static void main(String[] args) { try { // 创建文件输入流 FileInputStream fis = new FileInputStream("example.docx"); // 创建XWPFDocument对象 XWPFDocument doc = new XWPFDocument(fis); // 获取所有段落 for (XWPFParagraph para : doc.getParagraphs()) { // 输出段落文本 System.out.println(para.getText()); } // 关闭文件输入流 fis.close(); } catch (Exception e) { e.printStackTrace(); } } } 上述代码使用了Apache POI库,该库提供了读写Microsoft Office格式文件的API。在上述代码中,我们创建了一个XWPFDocument对象,然后通过getParagraphs()方法获取所有段落,并使用getText()方法获取段落文本。 写入docx文件: java import java.io.FileOutputStream; import org.apache.poi.xwpf.usermodel.*; public class WriteDocxFile { public static void main(String[] args) { try { // 创建文件输出流 FileOutputStream fos = new FileOutputStream("example.docx"); // 创建XWPFDocument对象 XWPFDocument doc = new XWPFDocument(); // 创建段落对象 XWPFParagraph para = doc.createParagraph(); // 设置段落文本 para.createRun().setText("Hello World!"); // 保存文档 doc.write(fos); // 关闭文件输出流 fos.close(); } catch (Exception e) { e.printStackTrace(); } } } 上述代码创建了一个XWPFDocument对象,然后使用createParagraph()方法创建了一个段落对象,使用createRun()方法在段落中创建文本,并使用setText()方法设置文本内容。最后,使用write()方法将文档保存到文件中。
### 回答1: a. 使用文件后缀名来判断文件类型。例如,文件名为text.doc,则文件类型为Microsoft Word文档。 b. 查看文件头部,即文件开头的几个字节,以确定文件类型。例如,PDF文件的文件头部为%PDF-开头的几个字节。 ### 回答2: 找出文件类型的方法有很多种,以下是其中两种常用的方法。 方法一:根据文件后缀名查找 每个文件都有一个后缀名,它表示文件的类型。通过查找文件的后缀名,我们可以确定文件的类型。常见的后缀名有.docx(Word文档)、.xlsx(Excel文档)、.jpg(图片)等。 通过后缀名查找文件类型的步骤如下: 1. 找到该文件的后缀名,例如:abc.docx。 2. 查找后缀名对应的文件类型,如.docx对应的是Word文档。 通过这种方法可以快速确定文件的类型,但有时文件的后缀名可能被修改或隐藏,因此可能无法准确确定文件类型。 方法二:通过文件的魔数查找 文件的魔数是文件中的一小段特征码,用于标识文件类型。通过查找文件的魔数,我们可以判断文件的类型。 通过魔数查找文件类型的步骤如下: 1. 打开文件,并读取文件的前几个字节。 2. 根据文件的前几个字节,与已知的魔数进行比对。 3. 如果比对成功,则判断文件类型为对应的类型。 魔数是由文件的制作软件决定的,不同文件类型的魔数是不同的,可以保证文件类型的准确性。但是该方法需要读取文件的字节,所以效率较低。 综上所述,通过根据文件后缀名查找和通过文件的魔数查找这两种方法可以有效地找出文件的类型。 ### 回答3: 找出文件类型的方法有很多种,以下给出两个常用的方法: 1. 根据文件扩展名:文件扩展名是文件命名的最后一部分,通常以点开头,例如.txt、.docx、.jpg等。通过查看文件的扩展名就可以确定文件类型。可以通过在文件资源管理器中查看文件属性来获取文件扩展名,或者通过编程语言中的文件操作功能来获取文件的扩展名。 2. 根据魔数:文件魔数是指文件存储的开头几个字节中的特定编码值,用于标识文件类型。不同文件类型的开头字节有不同的魔数,通过比对文件的开头几个字节的编码值,可以确定文件类型。可以通过查阅文件魔数表来获取不同文件类型的魔数,或者使用专门的文件类型识别工具来识别文件的魔数。 这两种方法都是常用的文件类型识别方法,它们在不同的应用场景和需求下有着各自的优势和适用性。在实际应用中,可以根据具体的需求选择合适的方法来找出文件类型。

最新推荐

老主板支持NVME硬盘.docx

手上有一块华硕的老主板,闲置了有一段时间,由于是个Mini小板,准备在淘宝上淘个小机箱,整一下准备作为代码服务器用。考虑到现在是NVMe M.2固态硬盘已经是普及满天下,决定直接上NVMe固态硬盘了,详细过程文档下载...

使用acrobat创建PDF时,不支持docx、doc等Microsoft Office文件时的解决方法.docx

使用acrobat创建PDF时,不支持docx、doc等Microsoft Office文件时的解决方法

VIVADO2017.4FPGA烧写文件下载步骤.docx

利用VIVADO编译器进行烧写程序,既有烧写BIT文件也包括MCS文件。详细概括了烧写步骤等等,利用VIVADO编译器进行烧写程序,既有烧写BIT文件也包括MCS文件。详细概括了烧写步骤等等

autojs文件操作类说明.docx

autojs文件操作类的使用说明 back(); //返回键 home(); //主页HOME powerDialog(); //弹出电源菜单 notifications(); //拉出通知栏 quickSettings(); //显示快速设置(下拉通知栏到底) recents(); ...

vivado2017.4制作zynq相关启动文件.docx

文档详细描述了如何一步一步制作zynq启动所需要的四个文件BOOT.bin,u-boot.elf,uImage,devicetree.dtb,文档配图不多,但是都是干货,验证过的,如有问题留言交流

企业人力资源管理系统的设计与实现-计算机毕业论文.doc

企业人力资源管理系统的设计与实现-计算机毕业论文.doc

"风险选择行为的信念对支付意愿的影响:个体异质性与管理"

数据科学与管理1(2021)1研究文章个体信念的异质性及其对支付意愿评估的影响Zheng Lia,*,David A.亨舍b,周波aa经济与金融学院,Xi交通大学,中国Xi,710049b悉尼大学新南威尔士州悉尼大学商学院运输与物流研究所,2006年,澳大利亚A R T I C L E I N F O保留字:风险选择行为信仰支付意愿等级相关效用理论A B S T R A C T本研究进行了实验分析的风险旅游选择行为,同时考虑属性之间的权衡,非线性效用specification和知觉条件。重点是实证测量个体之间的异质性信念,和一个关键的发现是,抽样决策者与不同程度的悲观主义。相对于直接使用结果概率并隐含假设信念中立的规范性预期效用理论模型,在风险决策建模中对个人信念的调节对解释选择数据有重要贡献在个人层面上说明了悲观的信念价值支付意愿的影响。1. 介绍选择的情况可能是确定性的或概率性�

动态规划与最大子数组和问题:如何高效解决序列中的最大子数组和

## 1. 引言 ### 1.1 背景介绍 动态规划是一种解决复杂问题的算法设计方法,它通过将问题分解成子问题,并解决每个子问题,从而逐步构建最优解。在计算机科学和算法领域,动态规划被广泛应用于优化问题的求解。 ### 1.2 动态规划在算法中的重要性 动态规划不仅仅是一种算法,更是一种解决问题的思维方式。它通过保存子问题的解,避免了重复计算,从而在时间和空间上实现了效率的提升。这种思想在很多经典算法问题中都发挥着关键作用,其中之一便是最大子数组和问题。 ### 1.3 最大子数组和问题的实际应用场景 最大子数组和问题是在一个数组中找到一个具有最大和的连续子数组的问题。这个问题在实际中有

devc++6.3大小写字母转换

根据提供的引用内容,无法直接回答关于 Dev-C++ 6.3 的大小写字母转换问题。Dev-C++ 是一个集成开发环境(IDE),用于编写和运行 C/C++ 程序。如果您想要实现大小写字母转换,可以使用 C++ 标准库中的 toupper() 和 tolower() 函数。这两个函数分别将字符转换为大写和小写形式。以下是一个简单的示例程序: ```c++ #include <iostream> #include <string> using namespace std; int main() { string str = "Hello, World!"; for (int

基于ADuC812单片机的温湿度检测仪-毕业设计.doc

基于ADuC812单片机的温湿度检测仪-毕业设计.doc