版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 淮海工学院淮海工学院 计算机课程再回首:再回首:Java编程基础知识简要回顾:编程基础知识简要回顾: 面向对象编程的基本概念面向对象编程的基本概念 两类基本的两类基本的Java程序编写及运行方式程序编写及运行方式 Java语言的语法结构语言的语法结构 在在Java中如何定义类中如何定义类( 关键关键:修饰符的使修饰符的使用用) 在在Java中如何实现继承与多态中如何实现继承与多态 如何利用系统提供的工具类如何利用系统提供的工具类 如何设计图形用户界面如何设计图形用户界面(关键关键:将控件的将控件的事件响应与类的方法联系起来事件响应与类的方法联系起来) 淮海工学院淮海工学院 计算机课程第第7章
2、章 JAVA的高级编程的高级编程7.1 Java的数据库编程的数据库编程(重点)(重点)7.2 输入输出流和文件处理输入输出流和文件处理7.3 Java的多线程机制的多线程机制(难点难点)7.4 Java的网络编程的网络编程 7.5 Java的多媒体技术的多媒体技术 淮海工学院淮海工学院 计算机课程学习要求学习要求 掌握掌握Java数据库编程的基本技术数据库编程的基本技术-Jdbc 理解流的概念,掌握在理解流的概念,掌握在Java中进行文件中进行文件读、写操作的方法读、写操作的方法 理解理解Java的多线程机制的多线程机制 了解了解Java网络编程的一般原理网络编程的一般原理 了解了解Java
3、多媒体技术的基本知识多媒体技术的基本知识 淮海工学院淮海工学院 计算机课程思考:思考:复习:复习:程序中数据的存储方法有:程序中数据的存储方法有:单个、临时的:单个、临时的:变量变量多个、同类型、临时的(退出即消失):多个、同类型、临时的(退出即消失):数组数组多个、不同类型、临时的:多个、不同类型、临时的:向量向量若若Java应用程序中需要用到大量的数据,应用程序中需要用到大量的数据,或需要长久保留的数据,或需要进行反复查询、或需要长久保留的数据,或需要进行反复查询、统计、维护等操作的数据,统计、维护等操作的数据,该用什么方式进行存储和调用更有效呢?该用什么方式进行存储和调用更有效呢? 淮海
4、工学院淮海工学院 计算机课程7.1 Java的数据库编程的数据库编程 Java中专门设置了一个中专门设置了一个java.sql包包,定义了很多用,定义了很多用来实现来实现SQL功能的类,使用这些类,编程人员就可功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。以很方便地开发数据库前端的应用。 因为因为SQL是一种直接对数据库进行操作的非过程扫是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现所以需要其他语言来实现SQL语言的功能以完成对语言的功能以完成对数据库的操作。数据库的操作。
5、淮海工学院淮海工学院 计算机课程7.1.1 数据库编程基础知识数据库编程基础知识(1)Java数据类型与数据表中的字段对应数据类型与数据表中的字段对应(2)创建数据源()创建数据源(ODBC)(3)常用的数据库操作)常用的数据库操作SQL语句语句 淮海工学院淮海工学院 计算机课程(1)Java数据类型与数据表中的字段对应数据类型与数据表中的字段对应数据库数据库字符类属性字符类属性数值类属性数值类属性Access文本(文本( char 、 String)数字(数字(int、long、float、double)其中其中“字节字节”只可数字只可数字SQLServerchar字母占字母占1位位汉字占汉
6、字占2位位int 、bigintvarcharsmallint、tinyintnchar字母占字母占1位位汉字占汉字占1位位floatnvarcharnumericText ntext保存不定长保存不定长字符串数据字符串数据real 淮海工学院淮海工学院 计算机课程char、varchar、text和和nchar、nvarchar、ntext辨析辨析 char和和varchar的长度都在的长度都在1到到8000之间;之间; 它们的区别在于它们的区别在于char是定长字符数据是定长字符数据,而,而varchar是变长字符数据;是变长字符数据; 所谓所谓定长定长就是长度固定的,当输入的数据长度没就
7、是长度固定的,当输入的数据长度没有达到指定的长度时将自动有达到指定的长度时将自动以英文空格在其后面以英文空格在其后面填充填充,使长度达到相应的长度;,使长度达到相应的长度; 而变长字符数据则不会以空格填充;而变长字符数据则不会以空格填充; text存储可变长度的非存储可变长度的非Unicode数据,最大长度为数据,最大长度为231-1(2,147,483,647)个字符。个字符。 淮海工学院淮海工学院 计算机课程 后面三种多了个字母后面三种多了个字母“n”,它表示存储的是,它表示存储的是Unicode数据类型的字符。数据类型的字符。它所有的字符都用两个它所有的字符都用两个字节表示,即英文字符也
8、是用两个字节表示字节表示,即英文字符也是用两个字节表示。 nchar、nvarchar的长度是在的长度是在1到到4000之间。之间。 和和char、varchar比较:比较:nchar、nvarchar则最多存则最多存储储4000个字符,不论是英文还是汉字;个字符,不论是英文还是汉字;而而char、varchar最多能存储最多能存储8000个英文,个英文,4000个汉字。个汉字。 可以看出使用可以看出使用nchar、nvarchar数据类型时不用担数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。存储英文时数量上有些损
9、失。 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程(2)创建数据源)创建数据源 以以ACCESS为例为例 任务栏任务栏“开始开始” 设置设置控制面板控制面板管理工具管理工具 数据源(数据源(ODBC) 系统系统DSN添加添加 Microsoft Access Driver(*.mdb) 完成完成 输入数据源名字输入数据源名字选择选择在对话框中找到所需要在对话框中找到所需要的数据库的数据库 ( 高级高级 输入用户名输入用户名密码)密码) 确定确定 淮海工学院淮海工学院 计算机课程 以以Windows7 + SQL Server 2008为例
10、为例 先在数据库里建立一个帐户、密码,指定其可以访问先在数据库里建立一个帐户、密码,指定其可以访问的数据库,再点任务栏的数据库,再点任务栏“开始开始”按钮按钮运行(或直接运行(或直接输入输入cmd) odbcad32.exe ODBC数据源管理器数据源管理器 系统系统DSN添加添加 SQL Server 完成完成 输入数据源的名称输入数据源的名称选择下拉列表中的服务器选择下拉列表中的服务器下下一步一步 点选输入点选输入ID和密码的验证和密码的验证 输入用户名和密输入用户名和密码码下一步下一步(如果正常的话会提示连接成功,否则(如果正常的话会提示连接成功,否则提示失败)提示失败) 完成完成 淮海
11、工学院淮海工学院 计算机课程创建数据库创建数据库 淮海工学院淮海工学院 计算机课程设置数设置数据库访据库访问账户问账户 淮海工学院淮海工学院 计算机课程用刚建的账号测试能否正常登录用刚建的账号测试能否正常登录SQLSERVER2008 ,如果先遇到了233 错误,后又遇到了18456 错误,解决办法如下:打开程序所有程序Microsoft SQL Server 2008 配置工具SQL Server 配置管理器,在弹出的窗体中,找到SQL Server 2008 网络配置,把MSSQLSERVER的协议下的“Named Pipes”和“TCP/IP”启动,然后重新启动 Microsoft SQ
12、L Server 2008就可以了。 注意要把服务重新启动: 淮海工学院淮海工学院 计算机课程打开打开ODBC数数据源管理器据源管理器 淮海工学院淮海工学院 计算机课程配置配置ODBC数据源数据源 淮海工学院淮海工学院 计算机课程ODBC 数据源管理中的用户数据源管理中的用户DSN和系统和系统DSN有什么区别?有什么区别? 用户用户DSN是与用户相关的,不同用户建立的是与用户相关的,不同用户建立的DSN相相互不可见互不可见; 而而系统系统DSN与用户无关与用户无关,所有用户都可,所有用户都可见见 ; 用户用户DSN保存在注册表中的保存在注册表中的HKEY_CURRENT_USERSoftwar
13、eODBC项下项下(不不包括包括ODBC驱动驱动) 系统系统DSN保存在注册表中的保存在注册表中的HKEY_LOCAL_MACHINESoftwareODBC项下项下 淮海工学院淮海工学院 计算机课程(3)常用的数据库操作)常用的数据库操作SQL语句语句 SELECT语句语句查询记录查询记录 INSERT语句语句插入记录插入记录 UPDATE语句语句更新记录更新记录 DELETE语句语句删除记录删除记录 CREATE语句语句创建表创建表 淮海工学院淮海工学院 计算机课程语句功语句功能能语法格式语法格式建立数建立数据表据表CREATE TABLE 数据表名数据表名 (字段名字段名1 数据类型数据
14、类型(长长度度), 字段名字段名2 数据类型数据类型(长度长度),)举例:举例:create table student(xh text(9), xm text(8) , cj single(4), nl integer(2) 建立含有建立含有xh、xm、cj、nl 4个字段的个字段的student表表添加字添加字段段ALTER TABLE 数据表名数据表名 ADD COLUMN 字段名字段名 数据类型数据类型(长度长度)举例:举例:alter table student add column xb text(2) 在在学生表中添加性别字段学生表中添加性别字段删除字删除字段段ALTER TAB
15、LE 数据表名数据表名 DROP COLUMN 字段名字段名举例:举例: alter table student drop column nl 将学生表将学生表中的年龄字段删除中的年龄字段删除 淮海工学院淮海工学院 计算机课程数据查数据查询询SELECT 字段名表字段名表 FROM 子句子句 WHERE 子句子句 GROUP BY 子句子句HAVING 子句子句 ORDER BY 子句子句 INTO 子句子句举例举例:select xh, xm from student where xb=男男 order by xh 从学生表中查询性别为男的学生,显示其学号和姓名并从学生表中查询性别为男的学生
16、,显示其学号和姓名并使结果按学号升序排列使结果按学号升序排列。添加记添加记录录INSERT INTO 数据表名数据表名(字段名字段名1 1,字段名字段名2 2) VALUES(数据数据1 1,数据数据2 2)举例举例:insert into student (xh, xm, xb) values(015200101, 王小二王小二, 男男)删除记删除记录录DELETE FROM 数据表名数据表名 WHERE 条件表达式条件表达式举例举例:delete from student where xb=男男 更新记更新记录录UPDATE 数据表名数据表名 SET 新数据值新数据值 WHERE 条件表达
17、条件表达式式举例:举例:update student set cj=cj+5 where xb=女女 淮海工学院淮海工学院 计算机课程7.1.2 JDBC的概念的概念 JDBC(Java DataBase Connectivity)是一种用于)是一种用于执行执行SQL语句的语句的Java API,由一组用,由一组用Java语言编语言编写的类和接口组成,可以为多种关系数据库提供写的类和接口组成,可以为多种关系数据库提供统一访问,即统一访问,即用用Java实现的数据库接口技术实现的数据库接口技术。 辅助辅助Java程序实现数据库功能的配套支持技术通程序实现数据库功能的配套支持技术通称为称为JDBC
18、。 JDBC的用途:的用途: (1)与数据库建立连接)与数据库建立连接 (2)发送)发送SQL语句语句 (3)处理结果)处理结果 淮海工学院淮海工学院 计算机课程示例:示例:/与数据库建立连接与数据库建立连接Connection con=DriverManager.getConnection(“jdbc:odbc:student”,”user”,”pwd”);/发送发送SQL语句语句,从数据库中提取记录从数据库中提取记录Statement stmt=con.createStatement();ResultSet rs=stmt.excuteQuery(“select id,name,score
19、 from table_student ”);/对读出的记录结果进行处理赋给变量对读出的记录结果进行处理赋给变量While (rs.next() int sid=rs.getInt(“id”); String sname=rs.getString(“name”); Float scj=rs.getFloat(“score”); 淮海工学院淮海工学院 计算机课程JDBC 和数据库的通信路径和数据库的通信路径JDBC APIJDBC Driver API负责与负责与java应用程序应用程序通信通信,向向java应用程序应用程序提供数据提供数据负责与具负责与具体数据环体数据环境的连接境的连接Java
20、 应用程序应用程序JDBC 驱动程序管理器驱动程序管理器数据库JDBC/ODBC桥桥供应商提供供应商提供的的JDBC驱驱动程序动程序ODBC驱动程序驱动程序数据库 淮海工学院淮海工学院 计算机课程四类四类JDBC驱动程序驱动程序 第一类第一类把把JDBC转换成转换成ODBC,靠,靠ODBC驱动程序与数驱动程序与数据库通信据库通信 第二类第二类其源代码由两部分组成其源代码由两部分组成,一部分是,一部分是java语言代码,语言代码,另一部分是本地代码,这类驱动程序和一个数据库客户另一部分是本地代码,这类驱动程序和一个数据库客户的的API通信通信; 第三类第三类是一个纯是一个纯Java客户库客户库,
21、它使用一个独立于数据库,它使用一个独立于数据库的协议,把数据库请求传送给一个服务器组件,这个组的协议,把数据库请求传送给一个服务器组件,这个组件把数据库请求转换成指定数据库协议接受的请求;件把数据库请求转换成指定数据库协议接受的请求; 第四类第四类是一个纯是一个纯Java库库,直接把,直接把JDBC请求转换成指定请求转换成指定数据库协议接受的请求。数据库协议接受的请求。 数据库厂商一般都为其数据库提供第三或第四类驱动程数据库厂商一般都为其数据库提供第三或第四类驱动程序。序。 淮海工学院淮海工学院 计算机课程JDBC-ODBC桥的概念桥的概念 ODBC(Open Database Connect
22、ivity,开放数据,开放数据库互连库互连)是微软公司开放服务结构是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据中有关数据库的一个组成部分,它建立了一组规范,并提供库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准了一组对数据库访问的标准API。这些。这些API利用利用SQL来完成其大部分任务。来完成其大部分任务。ODBC本身也提供了对本身也提供了对SQL语言的支持,用户可以直接将语言的支持,用户可以直接将SQL语句送给语句送给ODBC。 ODBC的最大优点是能以统一的方式处的最大优点是能以统一的方式处理所有的
23、数据库。理所有的数据库。 淮海工学院淮海工学院 计算机课程 JDBC-ODBC桥是一个桥是一个JDBC驱动程序驱动程序,它通过将它通过将JDBC操作转换为操作转换为ODBC操作来实现操作来实现JDBC操作。操作。 通过通过odbc子协议子协议,使用,使用URL打开打开JDBC连接即可连接即可使用桥,建立连接前必须将桥驱动程序类使用桥,建立连接前必须将桥驱动程序类sun.jdbc.odbc.JdbcOdbcDriver添加到名为添加到名为jdbc.drivers的的java,lang.System属性中,或者用代属性中,或者用代码显示加载:码显示加载: Class.forName(“sun.jd
24、bc.odbc.JdbcOdbcDriver”); 淮海工学院淮海工学院 计算机课程7.1.3 用用JDBC连接数据库连接数据库1. 建立数据源建立数据源 加载加载Java应用程序所用的数据库的驱动程序。应用程序所用的数据库的驱动程序。 以以JDBC-ODBC桥为例:桥为例:控制面板控制面板管理工具管理工具数数据源(据源(ODBC)系统系统DSN添加添加选择后台数据选择后台数据库库: SQL server(或或MS Access Driver) 给出数据给出数据源名和服务器名源名和服务器名选择选择SQL验证方式、输入用户名验证方式、输入用户名和密码和密码选择需要连接的数据库选择需要连接的数据库
25、确定。确定。例例: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url= String url=”jdbc:odbc:jdbc:odbc:studentstudent”; ; 淮海工学院淮海工学院 计算机课程2. 建立连接建立连接 DriverManager类用来处理驱动程序的调入类用来处理驱动程序的调入,并且对新并且对新的数据库连接提供支持的数据库连接提供支持.与数据库建立连接的标准方法是调用方法创建对象:与数据库建立连接的标准方法是调用方法创建对象:Connection con= DriverManager.getConnec
26、tion ( String url, String user, String password); 数据源的数据源的位置位置访问数据访问数据源的密码源的密码访问数据源访问数据源的用户名的用户名 淮海工学院淮海工学院 计算机课程3. 执行执行SQL语句语句 JDBC提供了提供了Statement接口接口来发送来发送SQL语句,语句,Statement接口的对象由接口的对象由createStatement方法方法创建创建; SQL语句发送后返回的结果通常存放在一个语句发送后返回的结果通常存放在一个ResultSet接口接口的对象中的对象中; ResultSet可以看作一个表,这个表包含由可以看作一
27、个表,这个表包含由SQL返返回的列名和相应的值,回的列名和相应的值, ResultSet对象中维持了对象中维持了一一个指向当前行的指针个指向当前行的指针,通过一系列,通过一系列getxxx方法检方法检索当前行的各个列,从而显示出来。索当前行的各个列,从而显示出来。 淮海工学院淮海工学院 计算机课程 statement.close();statement.close(); connection.close(); connection.close(); 淮海工学院淮海工学院 计算机课程7.1.4 JDBC编程编程 在在Java中用中用JDBC编程主要是对编程主要是对JDBC API的应用,的应用,
28、在在JDBC API中对数据库的应用主要是对中对数据库的应用主要是对DriverManager类类、 Connection、 Statement 、PreparedStatement和和 ResultSet这几个接口的应用。这几个接口的应用。DriverManager类类 是是JDBC的管理层,跟踪可用的驱动程序,并在数据的管理层,跟踪可用的驱动程序,并在数据库和应用程序之间建立连接。通过调用库和应用程序之间建立连接。通过调用Class.forName()()方法可显示地加载驱动程序,然方法可显示地加载驱动程序,然后自动在后自动在DriverManager类中注册。类中注册。 淮海工学院淮海工
29、学院 计算机课程例:例:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);String url=jdbc:odbc:CardAccess;Connection conn = DriverManager.getConnection(url,”uid”,”pwd”); 淮海工学院淮海工学院 计算机课程Statement接口接口 Statement对象用于将对象用于将SQL语句发送到数据库中。语句发送到数据库中。 Statement接口提供了三种执行接口提供了三种执行SQL语句的方法:语句的方法: executeQuery(String )用于执行用于执行sel
30、ect语句语句 executeUpdate(String)用于执行用于执行insert 、update、 delete语句及数据定义语句(如语句及数据定义语句(如create table) execute()()用于执行返回多个结果集、多个更用于执行返回多个结果集、多个更新等复杂功能。新等复杂功能。例:例: Statement stm= conn. createStatement() ; ResultSet rs=stm.executeQuery(“select * from xs”); 淮海工学院淮海工学院 计算机课程PreparedStatement接口 PreparedStatement
31、 PreparedStatement 代表一个预编译的代表一个预编译的SQLSQL语句语句, ,是是从从StatementStatement接口继承而来的接口继承而来的, ,与与StatementStatement不同之处不同之处: : (1) PreparedStatement (1) PreparedStatement实例包含实例包含已编译好的已编译好的SQLSQL语句语句, ,执行速度比执行速度比StatementStatement快快, ,需要多次执行的需要多次执行的SQLSQL语句经语句经常创建为常创建为PreparedStatementPreparedStatement对象对象;
32、;(2) (2) 包含在包含在PreparedStatementPreparedStatement中的中的SQLSQL语句中语句中可以具可以具有一个或者多个有一个或者多个ININ参数参数,SQL,SQL语句中的参数先用语句中的参数先用 ? ? 号号作占位符作占位符. .一般一般StatementStatement用于用于SELECTSELECT语句语句,PreparedStatement,PreparedStatement用用于于UPDATEUPDATE语句语句,ResultSet,ResultSet用于用于SELECTSELECT的结果集。的结果集。 淮海工学院淮海工学院 计算机课程Resu
33、ltSet接口接口 ResultSet包含符合包含符合SQL语句中条件的所有行语句中条件的所有行,并通过,并通过一套一套get方法访问当前行中的不同列。方法访问当前行中的不同列。 ResultSet.next()()方法用于移动到记录集中的下一行,方法用于移动到记录集中的下一行,并使下一行成为当前行。并使下一行成为当前行。 列是从左到右编号的,从列是从左到右编号的,从列列1开始。用开始。用getXXX方法输方法输入入列名列名时时不区分大小写不区分大小写。例:例:ResultSet rs=stm.executeQuery(“select xh,xm,nl from tb”);String no=
34、 rs.getString(“xh”);String name= rs.getString(“xm”);int age= rs.getInt(3); 淮海工学院淮海工学院 计算机课程用用JDBC-ODBC 连接数据库示例连接数据库示例import java.sql.*;public class TestJDBCpublic static void main(String args) Statement stm;ResultSet rs;Connection conn; PreparedStatement sql2,sql3; String url = jdbc:odbc:CardAccess;
35、 String user= ;String password= ; try / 使用使用jdbc与与odbc桥创建数据库连接桥创建数据库连接 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); / 使用使用getConnection()方法建立连接,第方法建立连接,第2个参数定义用户名,个参数定义用户名,第第3个参数定义密码个参数定义密码 conn = DriverManager.getConnection(url,user,password); stm=conn.createStatement(); 淮海工学院淮海工学院 计算机课程sql2= conn.
36、prepareStatement(“update STUDENT set 性别性别=男男 where 姓名姓名=Jane);sql3= conn.prepareStatement(“insert into STUDENT(学号学号,姓名姓名, 性别性别) values(1006,Alice,男男);sql2.executeUpdate(); /执行更新执行更新 / sql3.executeUpdate(); /执行插入执行插入 String sql1=select * from STUDENT; rs=stm.executeQuery(sql1); /得到查询结果并打印数据得到查询结果并打印数
37、据库原始记录库原始记录 System.out.print(学号学号 ); System.out.print(姓名姓名 ); System.out.println(性别性别); while(rs.next() System.out.print(rs.getLong(1)+ | ); System.out.print(rs.getString(2)+ | ); System.out.println(rs.getString(3); 淮海工学院淮海工学院 计算机课程 rs.close(); stm.close(); conn.close(); catch(SQLException sqle) Sys
38、tem.out.println(1+sqle.toString(); catch(Exception e) System.out.println(2+e.toString(); 淮海工学院淮海工学院 计算机课程7.2 输入输出流和文件处理输入输出流和文件处理7.2. 1 流的概念流的概念流流是指在计算机的输入与输出之间是指在计算机的输入与输出之间运动的数据的运动的数据的序列序列。输入流代表从外设流入计算机的数据序列,。输入流代表从外设流入计算机的数据序列,输出流代表从计算机流向外设的数据序列。输出流代表从计算机流向外设的数据序列。流的最大特点是:流的最大特点是:数据的获取和发送均按数据序数据的
39、获取和发送均按数据序列顺序进行列顺序进行。Java中的流分为两种(被抽象为四个类):中的流分为两种(被抽象为四个类): 字节流字节流: InputStream类和类和OutputStream类类 字符流字符流: Reader类和类和 Writer类类 字符流比字节流更有效。字符流比字节流更有效。 淮海工学院淮海工学院 计算机课程1. 字节流字节流 从抽象类从抽象类InputStream和和OutputStream派生出来的派生出来的一系列类,这类流以字节一系列类,这类流以字节(byte)为基本处理单位。为基本处理单位。 字节流类字节流类功能功能FileOutputStream写入文件的输出流写
40、入文件的输出流FileInputStream从文件读入的输入流从文件读入的输入流DataOutputStream包含了写包含了写Java标准数据类型的输出流标准数据类型的输出流DataInputStream包含了读取包含了读取Java标准数据类型的输入流标准数据类型的输入流BufferOutputStream缓冲输出流缓冲输出流ByteArrayInputStream从字节数组读取的输入流从字节数组读取的输入流ByteArrayOutputStream写入字节数组的输出流写入字节数组的输出流PrintStream包含最常见的包含最常见的Print()()和和Println()()的输出流的输出
41、流 淮海工学院淮海工学院 计算机课程基本输入流类基本输入流类InputStream的常用方法的常用方法 从流中读取数据:从流中读取数据:int read( ); /读取一个字节,返回值为所读的字节读取一个字节,返回值为所读的字节 int read( byte b ); 读取多个字节,放置到字节数组读取多个字节,放置到字节数组b中,通常读取的字节中,通常读取的字节 数量为数量为b的长度,返回值为实际读取的字节的数量的长度,返回值为实际读取的字节的数量int read( byte b , int off, int len ); 读取读取len个字节,放置到以下标个字节,放置到以下标off开始字节数
42、组开始字节数组b中,中, 返回值为实际读取的字节的数量返回值为实际读取的字节的数量 int available( ); /返回值为流中尚未读取的字节的数量返回值为流中尚未读取的字节的数量long skip( long n ); /读指针跳过读指针跳过n个字节不读,返回值个字节不读,返回值为实际跳过的字节数量为实际跳过的字节数量 关闭流关闭流: close( ); /流操作完毕后必须关闭流操作完毕后必须关闭 淮海工学院淮海工学院 计算机课程基本输出流类基本输出流类OutputStream 的常用方法的常用方法 输出数据:输出数据:void write( int b ); /往流中写一个字节往流中
43、写一个字节bvoid write( byte b ); /往流中写一个字节数组往流中写一个字节数组bvoid write( byte b , int off, int len ); 把字节数组把字节数组b中从下标中从下标off开始、长度为开始、长度为len的字节写入流中的字节写入流中 flush( ) /刷空输出流,并输出所有被缓存的字节刷空输出流,并输出所有被缓存的字节 由于某些流支持缓存功能,该方法将把缓存中所有由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。内容强制输出到流中。 关闭流关闭流: close( ); /流操作完毕后必须关闭流操作完毕后必须关闭 淮海工学院淮海
44、工学院 计算机课程2 字符流字符流 从抽象类从抽象类Reader和和Writer派生出的一系列子类,这派生出的一系列子类,这类流以类流以16位的位的Unicode码码表示的字符(一个字符由表示的字符(一个字符由两个字节组成)为基本处理单位。两个字节组成)为基本处理单位。常用字符流子类和功能常用字符流子类和功能InputStreamReader将字节转换为字符的输入流将字节转换为字符的输入流OutputStreamWriter将字节转换为字符的输出流将字节转换为字符的输出流FileReader从文件读入的输入流从文件读入的输入流FileWriter写入文件的输出流写入文件的输出流CharArra
45、yReader从字符数组读取的输入流从字符数组读取的输入流CharArrayWriter写入字符数组的输出流写入字符数组的输出流StringReader从字符数串读取的输入流从字符数串读取的输入流StringWriter写入字符串的输出流写入字符串的输出流 淮海工学院淮海工学院 计算机课程7.2.2 基本流基本流1. 键盘输入和格式化输出键盘输入和格式化输出 Java有有3个内置的标准流对象:个内置的标准流对象: 1)标准输入流标准输入流System.in: 用来读取用户从键盘的输入用来读取用户从键盘的输入 2)标准输出流标准输出流System.out: 用来在屏幕上显示信息用来在屏幕上显示信
46、息 3)标准输出流标准输出流System.err: 用来显示出错信息用来显示出错信息(1)键盘输入:)键盘输入: 使用使用System.in对象的对象的read()方法()方法 例:例: char c=(char)System.in.read( );使用使用InputStreamReader 、BufferReader流类流类例:例: InputStreamReader isr=new InputStreamReader(System.in); BufferReader br=new BufferReader(isr); 淮海工学院淮海工学院 计算机课程 通过通过Java的控制台类的控制台类C
47、onsole类类Console类不是类不是Java的标准类库,它属于的标准类库,它属于corejava包。包。使用使用Console类时需要加:类时需要加: Import corejava.ConsoleConsole类主要方法:类主要方法:1)readInt(String prompt) 提示输入一个整数提示输入一个整数2)readDouble(String prompt) 提示输入一个浮提示输入一个浮点数点数3)readLine(String prompt) 提示输入一个字符提示输入一个字符串,直到行结束。串,直到行结束。例:例:String s=Console.readLine(“请输入
48、你的名字请输入你的名字”); System.out.println(“你好,你好,”+s); 淮海工学院淮海工学院 计算机课程(2)格式化输出)格式化输出用用Java的标准输出的标准输出System.out,可以输出不同类,可以输出不同类型的对象:型的对象: 例:例:Int a=20; System.out .print(a) System.out .println(“大家好大家好”) /加换行加换行 用用java.text包中的包中的NumberFormat类可以控制显类可以控制显示格式示格式,有三种方法:,有三种方法:NumberFormat.getNumberInstance( ) /附
49、加逗号附加逗号NumberFormat.getCurrencyInstance( ) /货币符号货币符号NumberFormat.getPercentInstance( ) /百分号百分号 淮海工学院淮海工学院 计算机课程例:例:import java.io.*; import java.text.*; Public class TestOutput Public static void main(String args ) double x=2345.123; String s1,s2,s3; NumberFormat n1=NumberFormat.getNumberInstance( )
50、; NumberFormat c1=NumberFormat. getCurrencyInstance( ); NumberFormat p1=NumberFormat. getPercentInstance( ) ; s1=n1.format(x); s2=c1.format(x); s3=p1.format(x); System.out.println(s1+” ”+ s2+” ”+ s3); 结果:结果: 2,345.123 ¥ 2,345.12 234,512% 淮海工学院淮海工学院 计算机课程 用户自定义输出格式用户自定义输出格式 用用DecimalFormat类和类和Format类
51、类 DecimalFormat类适合货币之类的格式化类适合货币之类的格式化 Format类类(在附带的(在附带的corejava包中,要把它加到包中,要把它加到classpath中)中)适合科技方面格式化,和适合科技方面格式化,和C语言的语言的printf函数功能类似。函数功能类似。 DecimalFormat类的范例格式串类的范例格式串格式串格式串范例值范例值说明说明,#0.001,234.50小数点后两位,显示尾数零小数点后两位,显示尾数零$,#0.00($,#0.00)($1,234.50)用园括号包围负数代替使用一个负用园括号包围负数代替使用一个负号,要先加号,要先加$符号符号0.#1
52、234.5如果数在如果数在-1 和和1之间,打印前导之间,打印前导0,不显示尾数不显示尾数0 淮海工学院淮海工学院 计算机课程Format的范例格式的范例格式首先加:首先加: import corejava.Format;f固定格式的浮点数固定格式的浮点数Format.printf(“x的值是的值是%10.2fn”, x);d,i 以十进制表示的整数以十进制表示的整数s字符串字符串c字符字符g,G以一般格式表示浮点数,对小数用定点格式,以一般格式表示浮点数,对小数用定点格式,对大数用指数格式对大数用指数格式x,X以十六进制表示的整数以十六进制表示的整数o以八进制表示以八进制表示例:例:Form
53、at.printf(“你的工资是你的工资是%10.2fn”, pay); 淮海工学院淮海工学院 计算机课程7.2.3 文件类文件类1. Java程序的文件与目录管理程序的文件与目录管理 Java.io包中的包中的File类类专门用来管理磁盘文件和目专门用来管理磁盘文件和目录。每个录。每个File类的对象表示一个磁盘文件或目录,类的对象表示一个磁盘文件或目录,对象属性中包含名称、长度、所含文件个数等信对象属性中包含名称、长度、所含文件个数等信息。息。(1)创建)创建File类对象的三种方法:类对象的三种方法:File(String path); 指明磁盘文件或目录名及其路径指明磁盘文件或目录名及
54、其路径 注意:目录分隔符用注意:目录分隔符用System.dirSep表示表示 如:如:File f1=new File(“c:”+ System.dirSep+”sj”)File(String path, String name);文件或目录的路径文件或目录的路径文件或目录名文件或目录名 淮海工学院淮海工学院 计算机课程File(File dir, String name); (2)获取文件或目录属性)获取文件或目录属性已经存在的磁盘目录已经存在的磁盘目录boolean exists( )若文件或目录存在则返回若文件或目录存在则返回trueboolean isFile( )若对象代表有效文件
55、则返回若对象代表有效文件则返回trueboolean isDirectory( ) 若对象代表有效目录则返回若对象代表有效目录则返回trueString getName( )返回文件名或目录名返回文件名或目录名String getPath( )返回文件或目录的路径返回文件或目录的路径long length( )返回文件的字节数返回文件的字节数boolean canRead( )若文件为可读文件则返回若文件为可读文件则返回trueboolean canWrite( )若文件为可写文件则返回若文件为可写文件则返回trueboolean equals(File f ) 若两个文件对象相同则返回若两个
56、文件对象相同则返回trueString list( )将目录中所有文件名存在数组中返回将目录中所有文件名存在数组中返回 淮海工学院淮海工学院 计算机课程(3)文件或目录的操作)文件或目录的操作注意:注意:由于由于Java Applet程序是从网络上下载到本程序是从网络上下载到本地机器运行的,不可知也不可控,所以地机器运行的,不可知也不可控,所以Java的的安全机制禁止安全机制禁止Java Applet程序访问和存取本地程序访问和存取本地文件,如果试图在文件,如果试图在Java Applet程序中使用文件程序中使用文件操作,则将引发操作,则将引发Java的安全性异常。的安全性异常。Boolean
57、 renameTo(File newFile)将文件重命名Void delete( )将当前文件删除Boolean mkdir( )创建当前目录的子目录文件文件操作操作例子例子 淮海工学院淮海工学院 计算机课程2. 写文本文件写文本文件方法一方法一:用:用FileOutputStream打开文件打开文件my.txt,然后,然后用用PrintStream 对象对象p的的println方法把字符串写入方法把字符串写入文件中。文件中。例:例:FileOutputStream fout=new FileOutputStream(“my.txt”)PrintStream p=new PrintStrea
58、m(fout);p.println(“要写入文本文件中的内容要写入文本文件中的内容”);p.close();写文本例子写文本例子1 淮海工学院淮海工学院 计算机课程方法二方法二:用用FileWriter打开文件打开文件myf.txt,又创建,又创建了文本输出流了文本输出流out,然后用,然后用out 的的print(或者(或者println)方法把字符串写入文件方法把字符串写入文件中。中。 例:例: FileWriter fw= new FileWriter(“myf.txt”); PrintWriter out=new PrintWriter(fw); out.print(“要写入文本文件中
59、的内容要写入文本文件中的内容”); out.close(); /关于输出关于输出 fw.close(); /关闭文件关闭文件写文本例子写文本例子2 淮海工学院淮海工学院 计算机课程3. 读文本文件读文本文件方法一方法一:用:用FileInputStream打开文件打开文件my.txt,然后,然后建立建立DataInputStream的的 对象对象in(文件流),使用(文件流),使用in的的readLine()方法以一行为单位读出()方法以一行为单位读出my.txt文文件中的所有字符串。件中的所有字符串。例:例:FileInputStream fs=new FileInputStream(“my
60、.txt”)DataInputStream in=new DataInputStream(fs);while(in.available( )!=0) System.out.println( in.readLine() );in.close(); /关闭输入流关闭输入流读文本例子读文本例子1 淮海工学院淮海工学院 计算机课程方法二方法二:用:用FileReader打开文件打开文件myf.txt,然后用,然后用BufferedReader类的对象类的对象br作为文件流,用作为文件流,用br 的的readline()读取文件中的字符串。()读取文件中的字符串。 例:例: FileReader fr=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论