Java程序遍历图片文件夹并保存路径至TXT

需积分: 9 2 下载量 67 浏览量 更新于2024-09-08 收藏 2KB TXT 举报
"使用Java遍历特定文件夹中的所有图片,并将图片文件名写入TXT文本文件,以便于OpenCV在图像识别训练时读取使用。" 在这个Java程序中,主要目的是遍历指定路径下的文件夹,查找其中的图片文件,并将这些图片的文件名保存到一个TXT文件中。这样做的好处是方便OpenCV读取这些文件作为训练集,进行机器学习或深度学习的图像识别任务。 首先,程序包含了一个`Train`类,其中有一个`main`方法作为程序的入口点。在`main`方法中调用了`getFileName`方法,这是遍历文件夹并写入文件名的核心功能。 `getFileName`方法接收一个路径参数,这个路径是包含图片的文件夹。程序首先创建一个`File`对象表示这个路径,然后检查该路径是否存在,如果不存在则打印错误信息并返回。 接下来,程序创建了一个`File`对象表示目标TXT文件,这个文件将用来存储图片文件名。这里有两个不同的路径,分别对应正样本(positive)和负样本(negative),这可能意味着用户需要为两类不同的图片创建两个TXT文件。 在尝试打开TXT文件并获取`PrintWriter`对象后,程序通过调用`listFiles`方法获取指定文件夹下的所有文件。这将返回一个`File`对象数组,每个对象代表一个文件或子目录。然后,程序遍历这个数组,对每个文件执行以下操作: 1. 确保当前文件是一个文件(而非子目录),通过`fs.isFile()`判断。 2. 使用`ImageIO`读取该文件,确保它是图片。这通过尝试调用`ImageIO.read(fs)`实现,如果文件不是图片,`read`方法会抛出`IOException`,在这种情况下,异常会被`try-catch`块捕获并忽略,不会影响其他文件的处理。 3. 如果文件是图片,将其文件名(不含扩展名)写入TXT文件,通过`pw.println(fs.getName().substring(0, fs.getName().lastIndexOf(".")))`实现。这里只写入名称是为了避免在训练过程中加载不必要的扩展信息。 最后,`pw.close()`用于关闭`PrintWriter`,确保所有已写入的数据都被正确保存到文件中。 这个程序对于自动化构建OpenCV训练集非常有用,它简化了手动整理和记录大量图片文件名的过程,使得数据预处理更加高效。用户只需提供包含图片的文件夹路径,程序就能自动创建一个包含所有图片文件名的TXT文件,供OpenCV的训练脚本使用。