JAVA 练习题第10章--java数据流解析

合集下载

Java基础第10章课件

Java基础第10章课件

支持回推操作的数据流中的方法:
1. boolean markSupported()
用于指示数据流是否支持回推操作,当 一个数据流支持mark( )和reset( )方法时 返回true,反之返回false。
2. void mark(int markarea)
用于标记数据流的当前位置。
3. void reset( )
3. int available( )
返回可以从数据流中读取的字节数。
4. long skip(long l)
跳过数据流中指定数量的字节不读, 返回值表示实际跳过的字节数。
对数据流中字节的读取通常是按从 头到尾顺序进行的,如果需要以反 方向读取,则需要用“回推”(push back)的方法实现。
Collection
接口
+add(element:Object): boolean
+remove(element:Object): boolean +contains(element:Object): boolean +iterator(element:Object): boolean
接口
Set
List
1. 一种含有重复元素的、有序的集合,也 称序列;
2. 用户可以控制向序列中插入元素的位置 ,并可以按元素的位序(加入顺序)来 访问它们,位序从0开始。
3. ArrayList类实现了List接口。
ArrayList h = new ArrayList();
h 0x4a678b
0x4a678b
1st

HashSet ArrayList Vector
Set接口
1. 一种不包含重复元素的、有序的集和, 称为集合;

Java语言程序设计chap10

Java语言程序设计chap10
void close()
张华
Java Programming
10
理解输入输出超类
• Writer和OutputStream定义类似的接口 和 定义类似的接口
– Writer包含用于写字符和字符数组的方法 包含用于写字符和字符数组的方法
void write(int c) void write(char[] cbuf) void write(char[] cbuf, int off, int len)
– InputStream定义了相同的方法,但用于字节和字节数组 定义了相同的方法, 定义了相同的方法
int read() int read(byte[] b) int read(byte[] b, int off, int len)
张华
Java Programming
9
理解输入输出超类
• Reader和InputStream定义类似的接口 和 定义类似的接口
• Writer和OutputStream定义类似的接口 和 定义类似的接口
– 都定义了 都定义了flush方法 方法
void flush() • 为了提高效率,数据被输出到目的地之前被分割成固定长度的块, 为了提高效率,数据被输出到目的地之前被分割成固定长度的块, 放在输出缓冲区中, 放在输出缓冲区中,然后以块为单位输出
使用管道流
• 管道流
– 主要用于线程之间的通信
• 将一个线程的输出连接到另一个线程的输入 • PipedInputStream必须与 必须与PipedOutputStream配合 必须与 配合
管道 写 线程1 线程 PipedOutputStream PipedInputStream 读 线程2 线程

java语言程序设计第十章十二题参考答案

java语言程序设计第十章十二题参考答案

10.12 定义Myrectangle类,包含: 两个名为x和y的double 型数据域,表明矩形的中心点,这两个数据域都带有get和set方法(假设这个矩形的边和x和y轴平行); 带get和set方法的数据域width和height. 一个无参构造方法,,该方法创建一个(x,y)的值为(0,0)且width和height的默认值为1. 一个构造方法,创建带制定的x,y,width,height的矩形。 方法getArea()返回矩形的面积。 方法getPrimeter()返回矩形的周长。 如果给定的点(x,y)在矩形内,那么方法contains(double x,double y)返回true. 如果给定的矩形在这个矩形内,那么方法contains(Myrectangle2D r)返回true。 如果给定的矩形和这个矩形重叠,那么方法overlaps(Myrectangle2D r)返回true. 画出该类的UML图,实现这个类。 代码为: class MyRectangle2D{ double x=0,y=0;//x,y表示矩形中心点 double width=1,height=1; public double getX(){ return x; } public double getY(){ return y; } public void setX(double x){ this.x=x; } public void setY(double y){ this.y=y; } public double getWidth(){ return width; } public void setWidth(double width){ this.width=width; } public double getHeight(){ return height;

} public void setHeight(double height){ this.height=height; } MyRectangle2D(double x,double y,double width,double height){ this.x=x; this.y=y; this.width=width; this.height=height; }

Java语言程序设计课程教学辅导技术资料——第10章JavaIO技术及应用(第2部分)

Java语言程序设计课程教学辅导技术资料——第10章JavaIO技术及应用(第2部分)

Java语言程序设计课程教学辅导技术资料——第10章JavaIO技术及应用(第2部分)目录1.1Java语言程序设计课程教学辅导技术资料——第10章Java I/O 技术及应用(第2部分) (2)1.1.1随机文件读写 (2)1.1.2过滤流--带格式的读写操作 (5)1.1.3标准输入输出流 (9)1.1Java语言程序设计课程教学辅导技术资料——第10章Java I/O 技术及应用(第2部分)【教学目标】在本单元中希望您重点了解并掌握如下知识点:文件名及目录名的File类,本地文件读写,管道方式读写,随机文件读写,字符格式文件读写,标准数据类的数据读写,标准输入输出设备流等。

1.1.1随机文件读写1、RandomAccessFile类(1)为什么要提供RandomAccessFile类对于InputStream 和OutputStream 来说,它们的实例都是顺序访问流,也就是说,只能对文件进行顺序地读/写。

随机访问文件则允许对文件内容进行随机读/写。

在java中,类RandomAccessFile 提供了随机访问文件的方法。

(2)RandomAccessFile类的继承关系它直接继承于Object类而非InputStream或者OutputStream 类,从而可以实现读写文件任何位置中的数据(只需要改变文件的读写位置的指针)。

public class RandomAccessFile extends Object implements DataInput, DataOutput接口DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数。

如:readBoolean( )、readInt( )、readLine( )、readFully( ) 等。

接口DataOutput 中定义的方法主要是向流中写入基本类型的数据、或者写入一定长度的字节数组。

p10

p10

2020年1月5日星期日
5时59分29秒
Java 程序设计
14
10.2.5 多线程的同步
如果采用多线程同步控制机制,等到第一 个线程读取完数据,第二个线程才能处理该 数据,就会避免错误。可见,线程同步是多 线程编程的一个相当重要的技术。
10.2.6 多线程的问题
由于多线程是同时运行于内存中,程序员 必须加倍注意自己的多线程程序,搞清楚它 们之间的关系。否则还是少用几个线程,因 为不是线程越多程序就执行得越快,还有很 多因素决定着程序的执行速度。
l
线程调用了sleep()、join()方法时,线
程进入不可运行状态。
l
线程调用了wait()方法,线程由运行中
状态转入阻塞状态。
l 如果线程使用了synchronized来实现对 象的“互斥锁”联系,当前线程能获得使用 权时,继续为运行中状态,继续执行;若当 前线程没有获得使用权,进入阻塞状态。
若线程中有输入输出操作时,也可进入阻塞状 态,待输入输出结束后,线程进入可运行状 态。
(2)可以分别用Socket类的getInputStream( )和 getOutStream( )方法来发送和捕捉数据。
2020年1月5日星期日
5时59分29秒
Java 程序设计
20
10.3.4 无连接的客户/服务器通过数据报的交互
流式Socket可以实现准确的通信,但是占用资源较 多,在某些无须实时交互的情况下 ,例如收发Email等,采用保持连接的流式通信并不恰当,而应 该使用无连接的数据报方式。
多线程是相对单线程而言的,指的是在一 个程序中可以定义多个线程并同时运行它们, 每个线程可以执行不同的任务。
2020年1月5日星期日

Java应用教程_10Chapter

Java应用教程_10Chapter

2013年8月31日星期六
基本SQL语句

基本的SQL语句包括DQL和DML。也就 是对数据库最常用的四大基本操作:查 询(Select)、插入(Insert)、更新 (Update)和删除(Delete)2013年8月31日星来自六DQL的3种基本格式


1. 基本句型一:(最简单的SELECT语句) SELECT 字段名 FROM 数据表 例1. SELECT * FROM grade 功能说明:将grade表中的所有字段取出来。 例2. SELECT 学号,姓名 FROM grade 功能说明:将grade表中学号和姓名字段取出来。 例3. SELECT学号,姓名,语文+数学+英语 as 总成绩 FROM grade 功能说明:将grade表中的学号和姓名取出来,并将语 文、数学和英语成绩相加产生虚拟列总成绩。
2013年8月31日星期六
SQL语句分类
SQL分类 数据定义语言 (DDL) 数据操纵语言 (DQL) 数据操纵语言 (DML) 事务控制语言 (TCL) 数据控制语言 (DCL) 描述 数据定义语言(DDL)用于定义、修改或者删除数据库对象, 如Create Table等 数据查询语句(Data Query Language,DQL)用于对数据进行 检索。如最常用的Select语句 数据操纵语言(DML)用于访问、建立或者操纵在数据库中 已经存在数据,如Select、Insert、Update和Delete等等。 事务控制语言(Transact Control Language)管理DML语句所 做的修改,是否保存修改或者放弃修改。如:Commit、 Rollback、Savepoint、Set Transaction等命令。 数据控制语言(DCL)管理对数据库内对象的访问权限和授予 和回收,如Grant、Revoke等等。

JAVA语言-10

第10章 10章
输入与输出
1
10.1 输入输出类库
Java的输入输出是以流(stream)的方式来处理, Java的输入输出是以流(stream)的方式来处理, 流是在计算机的输入、输出操作中流动的数据序列。 流式输入、输出的特点是数据的获取和发送均沿数 据序列顺序进行。 数据序列中既可以是未经加工的原始二进制数 据,也可以是按一定编码处理后符合某种格式规定 的特定数据,如字符数据,所以Java中的流有位流 的特定数据,如字符数据,所以Java中的流有位流 (字节流)和字符流之分。 输入流:从键盘、磁盘文件流向程序的数据; 输出流:从程序流向显示器、打印机和磁盘文 件的数据。
输入或读取字节流的类说明如下: InputStream类:是抽象类,其子类可完成最基本的从输 InputStream类:是抽象类,其子类可完成最基本的从输 入流读取数据的功能; FileInputStream类:以字节流方式,读取本地文件; FileInputStream类:以字节流方式,读取本地文件; FilterInputStream类:是抽象类,有2 FilterInputStream类:是抽象类,有2个子类; DataInputStream类:从字节流中读取数据时,具备格式 DataInputStream类:从字节流中读取数据时,具备格式 转换功能;(如能一次读一个双精度数) BufferedInputStream类:具缓冲功能的输入字节流。 BufferedInputStream类:具缓冲功能的输入字节流。
6
10.1.2 OutputStream类 类
OutputStream FileOutputStream FilterOutputStream PrintStream DataOutputStream BufferedOutputStream

Java程序设计 p10

Java程序设计
教材:Java程序设计简明教程
第10章 流、多线程与网络编程
Java输入/输出信息时,应在程序和信息 发送者或接收者之间建立一个数据通道,这 个数据通道以流(Stream)的形式表示; Java语言具有多线程的特点,对多线程的支 持使得Java的功能更加强大;而面向 Internet的网络编程将是Java今后的主要研 究方向。
2019年3月6日星期三 11时46分19秒
Java 程序设计
4
10.1.2 数据流的应用
/*ch1001.java*/ import java.io.*; public class ch1001{ public static void main(String args[]) throws IOException { FileInputStream in FileInputStream("ch1001.java"); FileOutputStream FileOutputStream("ch1001.txt"); int c; while((c=in.read())!=-1) out.write(c); in.close(); out.close(); } }
}
2019年3月6日星期三 11时46分19秒 Java 程序设计 6
10.1.3 Java文件管理 为了全面管理文件系统,Java还提供了两个类: 一般文件类File和随机存取文件类 RandomAccessFile。前者提供操作系统目 录管理的功能,允许用户访问文件属性和路 径等信息,后者用于有选择的读写文件。 File类是一种重要的非流类 1. 文件或目录的生成 2. 文件名的处理 3. 文件属性测试 4. 普通文件信息和工具 5. 目录操作

java数据流




FileOutputStream(String name) FileOutputStream(File file)
第9章
本章导读 1、文件 2、文件字节流 3、文件字符流 4、从键盘读取数据 5、缓冲流 6、数组流
输入、输出流
本章导读 7、字符串流 8、数据流 9、管道流
10、序列化与对象克隆
11、随机读写流 12、文件锁

当程序需要读取磁盘上的数据或将程序中得到数据存储 到磁盘时,就可以使用输入输出流,简称I/O流 所谓“流”(Stream)代表任何有能力产出数据的数据源, 或是有能力接收数据的接收端 I/O流提供一条通道程序,可以使用这条通道读取“源” 中的数据,或把数据送到“目的地”


列出目录下指定类型的文件时,可以使用File类的 下述两个方法:

public String[ ] list(FilenameFilter obj)

该方法用字符串形式返回目录下的指定类型的 所有文件 该方法用File对象返回目录下的指定类型所有 文件

public File [ ] listFiles(FilenameFilter obj)

2、FileOutputStream类

与FileInputStream类相对应的类是FileOutputStream 类 FileOutputStream类是OutputStream的子类,称为文 件字节输出流;文件字节输出流按字节将数据写入到文 件中 FileOutputStream类的构造方法:



1、文件的属性 public String getName() 获取文件的名字 public boolean canRead() 判断文件是否是可读的 public boolean canWrite()判断文件是否可被写入 public boolean exits()判断文件是否存在 public long length() 获取文件的长度(单位是字节) public String getAbsolutePath() 获取文件的绝对路径 public String getParent() 获取文件的父目录 public boolean isFile() 判断文件是否是一个正常文 件,而不是目录 public boolean isDirectroy() 判断文件是否是一个目录 public boolean isHidden() 判断文件是否隐藏文件 public long lastModified() 获取文件最后修改的时间 (时间是从1970年午夜至文件最后修改时刻的毫秒数)

Java 程序设计基础第10章 Java语言的输入输出与文件处理

注意:流中的方法都声明抛出异常, 所以程序中调用流方法时必须处理异常, 否则编译不能通过。
8
10.2.1 基本的输入输出流
OutputStream类常用的方法及功能见教材表 10.2。 由于OutputStream是抽象类,所以程序中创 建的输出流对象一般是OutputStream某个子 类的对象,通过调用该对象继承的write() 方法就可以实现对相应外设的输出操作。
11
} 用FileInputStream 、 FileOutputStream来实现对二进制图 像文件的复制。 //filename:App10_2.java 读写二进制文件 import java.io.*; public class App10_2 { public static void main(String[] args) throws IOException { FileInputStream fi=new FileInputStream("d:\\cgj\\风景.jpg"); FileOutputStream fo=new FileOutputStream("d:\\cgj\\风景1.jpg"); System.out.println("文件的大小="+fi.available()); byte[] b=new byte[fi.available()]; fi.read(b); fo.write(b); System.out.println("文件已被拷贝并被更名"); fi.close(); fo2.2 输入输出流的应用
文件输入(FileInputStream)输出流 (FileOutputStream )主要负责完成对本地磁盘文 件的顺序输入与输出操作。 FileInputStream类的对象表示一个文件字节输入 流,从中可读取一个字节或一批字节。 FileOutputStream类的对象表示一个字节文件输 出流,可向流中写入一个字节或一批字节。在生 成该类的对象时,若指定的文件不存在,则创建 一个新的文件,若已存在,则清除原文件的内容。 FileInputStream类和FileOutputStream类的构造 方法见教材表10.3和10.4。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



写一个记录( )? A.BufferedInputStream B.RandomAccessFile C.FileWriter B D.FileReader 【解析】只有RandomAccessFile才能实现在文件的 任一个位置读写一个记录。
9.在通常情况下,下列哪个类的对象可以作为
C.ch = (char)System.in.readln();
D.ch = (int)System.in.read(); 【解析】System.in.read()方法返回的是字符对应的Unicode码,即返回的类型是 int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它 赋值给ch变量。另外,System.in对象中没有readln()方法。
BufferedReader类构造方法的参数( )? A.PrintStream B.FileInputStream C C.InputStreamReader D.FileReader 【解析】InputStreamReader类的对象可以作为 BufferedReader类构造方法的参数。
11.下列关于流类和File类的说法中错误的一项是




( )。 A.File类可以重命名文件 B.File类可以修改文件内容 C.流类可以修改文件内容 D.流类不可以新建目录 【解析】只有流类可以修改文件内容,而File类则 不能。
B
12.若要删除一个文件,应该使用下列哪个类的实



例( )? A.RandomAccessFile B.File C.FileOutputStream D.FileReader File类对象来实现。
{ public static void main(String args[ ]) { int i , n =10 ; int a[ ] = new int[5]; for ( i = 0 ; i < n ; i ++ ) try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数 } catch ( IOException e ) { } ; for ( i = n-1 ; i >= 0 ; i ―― ) System.out.print(a[i]+" "); System.out.println( ); } } 从标准输入(即键盘)读入5个整数存入整型 数组a中, 然后逆序输出这5个整数。
6.下列流中哪一个使用了缓冲区技术( A.BufferedOutputStaOutputStream
)?
D.FileReader
【解析】只有BufferedOutputStream使用了缓冲区
技术。
A
8.使用哪一个类可以实现在文件的任一个位置读
练习题—第10章数据流
1.下列数据流中,属于输入流的一项是( A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流
)。
D.从网络流向显示器的数据流
【解析】输入流是指从外围设备流向主机(包括
CPU和内存)的数据流。
B
2.Java语言提供处理不同类型流的类所在的包是
准备向文件中写内容时,应当使用FileInputStream
流还是FileOutputStream 流? FileOutputStream
写出以下程序的功能: import java.io.* ;


public class Reverse


( )。 A.java.sql B.java.util C. D D.java.io 【解析】java.io 包是Java语言提供处理不同类型流 的类所在的包。
4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的




按注释提示完成文件复制的程序,//FileStream源代码如下:
import java.io.*; class FileStream { public static void main(String args []) { try { File inFile = new File("file1.txt"); //指定源文件 File outFile = new File("file2.txt"); FileInputStream fis = int c; //逐字节从源文件中输入,再输出到fos流 while ((c = fis.read ())!=-1) 【 2】 ; 【 1】 ; //指定目标文件
一项填入“//x”处,完成要求的功能( )。 import java.io.*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x System.out.println(ch); } catch(IOException e){ B e.printStackTrace(); } } } A.ch = System.in.read(); B.ch = (char)System.in.read();
B
【解析】要删除文件以及查看文件属性等,应使用
13.下列哪一个是Java系统的标准输入流对象




( )? A.System.out B.System.in C.System.exit B D.System.err 【解析】System.in是Java系统的标准输入流对象, 而System.out和System.err则是Java系统的标准输出 流和标准错误对象,System.exit则是System类的退 出方法。
相关文档
最新文档