Java读取图片并保存示例:探索getClass()与反射机制

需积分: 18 4 下载量 192 浏览量 更新于2024-07-13 收藏 9.99MB PPT 举报
在Java课程中,一个重要的实践环节是处理数据库操作和文件I/O,特别是在演示如何读取内容并保存图片信息。本部分代码示例展示了如何使用JDBC(Java Database Connectivity)进行SQL查询,并利用ResultSet对象处理查询结果。 首先,我们看到一个简单的主函数`public static void main(String[] args)`,其中定义了一个整型变量`id`用于存储查询条件。SQL语句`SELECT name, photo FROM userblob WHERE id=?`用于从`userblob`表中选择`name`和`photo`字段,根据指定的id执行查询。 在代码中,通过`pstmt.setInt(1, id)`设置查询参数,然后调用`pstmt.executeQuery()`执行查询。当`rs.next()`返回`true`时,说明查询到了数据。接着,使用`rs.getString(1)`获取`name`列的字符串值,并将其打印出来。 关键部分在于处理`photo`列的图片信息,通过`rs.getBinaryStream(2)`获取到图片的二进制流(InputStream)。接下来,创建一个`FileOutputStream`,将图片数据写入到本地文件系统,文件路径为`d:`加上当前目录分隔符和文件名"loadmldn.gif"。使用`input.read()`逐个读取流中的字节,并写入到输出流`out`中,直到遇到`-1`(流结束)。最后,确保关闭输入流和输出流,以释放资源。 这部分内容还提到了Java反射机制,特别是`Object`类中的`getClass()`方法。这个方法返回一个代表该对象所属类的`Class`对象,它包含了类的完整信息,如方法和属性。通过`Class.forName()`方法,可以接收完整的类名字符串来动态创建`Class`对象,这对于动态加载和操作未知类的实例非常有用。此外,`Class`类提供了诸如`getConstructors()`、`getDeclaredFields()`、`getFields()`、`getMethods()`等方法,用于获取类的构造器、字段、属性和方法列表,从而实现反射操作。 总结来说,这段代码展示了Java编程中的数据库查询、结果集处理、文件操作以及基础的反射机制应用。这些知识点在实际开发中对于数据存取和程序灵活性具有重要意义。在教学或学习过程中,学生可以借此深入理解Java中的数据库交互、文件操作以及类和对象的动态属性获取。