JAVA中的流概念
《Java基础入门》_课后习题答案大一计算机专业7

《Java基础入门》课后习题答案第7章IO(输入输出)一、填空题1、Java中的I/O流,按照传输数据不同,可分为:字节流、字符流2.在Buffer与Channel交互时,数据从:Channel、读取到Buffer 中,或从Buffer入到Channel 中。
3.用于将字节流转换为字符流的是:InputStreamReader、OutputStreamWriter2、NIO主要有三大核心部分:Buffer、Channel、Selector5、Java中提供了一个类:RandomAccesseFile,它不但具有读写文件的功能,而且可以随机地从文件的任何位置开始执行读写数据的操作。
二、判断题1. 如果一个File表示目录下有文件或者子目录,调用delete()方法也可以将其删除。
错2.对象序列化是指将一个Java 对象转换成一个I/0 流中字节序列的过程。
对3.Channel 是一个接口对象,它类似于传统的流对象。
对4.InputStream类的close()方法是用于关闭流并且释放流所占的系统资源。
对5,BufferedInputStream 和BufferedOutputStream 不是字节缓冲流。
错三、选择题1.下面选项中,哪些是标准输人输出流?(多选) (AB)A. System.InB.System. OutC.InputStreamD.OutputStream2.File类中以字符串形式返回文件绝对路径的方法是哪一项?(C)A. getParent()B. getNamel)C. getAbsolutePathOD. getPath()3.以下创建RandomAccessFile类实例对象的代码,哪些是正确的?(多选)(AB)A.new RandomAccessFile(new File("D:\\itcast\\dirl\test. java"),”rw”);B.new RandomAccessFile("D:\\itcast\\dirl\test. java","r");C. new RandomAccessFile("D:\\itcast\\dir1\\test.java");D. new RandomAccessFile("D:\\itcast\\dir1\\test.java","wr")4.以下选项中,哪个流中使用了缓冲区技术? (A)A. BufferedOutputStreamB. FileInputStreamC. DataOutputStreamD. FileReader5.以下选项中,关于Java NIO 中Buffer类的常用说法正确的是哪一项?(B)A.clearO方法会清除缓冲区数据,并将position 设置为0.limit 设置为capacity OB.fip()方法先将limit 设置为当前position 位置,然后再将pson设置为0C.mark()方法用于设置Buffer 的标记(mark),其能在0 与limi 之间做标记D.rewind()方法将position 设置为0,并设置mark 标记四、简答题1、简述I/O 流的概念。
java的io面试题

java的io面试题在Java编程中,IO(Input/Output)是一个非常重要的概念,用于处理与输入和输出相关的任务。
在面试中,考官通常会问及关于JavaIO的问题,以评估应聘者对Java基础知识的了解程度。
以下是一些常见的Java IO面试题及其答案:1. 什么是流(Stream)?回答:流是Java中处理IO操作的抽象概念。
它代表了数据的传输,可以是从源(输入流)到目标(输出流)的传输。
流分为字节流和字符流两种类型。
2. 字节流和字符流有什么区别?回答:字节流以字节为单位进行数据传输,适用于处理二进制数据或者字节流形式的文本数据。
字符流以字符为单位进行数据传输,适用于处理字符数据。
3. 什么是缓冲流(Buffered Stream)?回答:缓冲流是对字节流和字符流的包装,提供了缓冲功能以提高数据读写的效率。
它通过减少与磁盘之间的实际访问次数来改善性能。
4. 文件读写常用的类有哪些?回答:Java提供了多个类用于文件读写,常见的有File、FileInputStream、FileOutputStream、FileReader、FileWriter等。
5. 如何读取文件内容?回答:可以使用FileInputStream或FileReader来读取文件内容。
首先,通过创建相应的流对象,并指定要读取的文件路径。
然后,使用read方法读取数据,并将其存储到变量中,直到读取完整个文件。
6. 如何写入文件?回答:可以使用FileOutputStream或FileWriter来写入文件。
首先,通过创建相应的流对象,并指定要写入的文件路径。
然后,使用write 方法将要写入的数据以字节或字符的形式传递给流对象。
7. 如何在文件中查找特定内容?回答:可以读取文件的每一行,逐行进行匹配搜索。
可以使用BufferedReader的readLine方法来逐行读取文件内容,并使用String的contains方法判断是否包含目标内容。
04747 java知识点总结

第七章:输入和输出流第一节:数据流的基本概念1.在java中,把不同类型的输入、输出源抽象为流,其中输入或输出的数据成为数据流,用统一的接口表示。
2.数据流是指一组有顺序的、有起点和终点的字节集合。
程序从键盘接收数据或向文件中写数据,都可以使用数据流来完成。
3.流分为输入数据流和输出数据流。
输入数据流只能读不能写;而输出数据流只能写不能读。
从数据流中读取数据是,必须有一个数据源与该数据流相连(FileInput Stream in = new FileInputStream(“javatest.txt”);)(实例化)4.Java.io包中提供了表示数据流的4个基本抽象类(不可以实例化),分别是InputStream、OutputStream、Reader和Writer。
因此涉及数据流操作的程序中,几乎都要使用引入语句:import java.io.*5.为了使对象的状态能够方便地永久保存下来,java.io包中又提供了以字节流为基础的用于对象的永久化保存状态的机制,通过实现ObjectInput和Object Output接口来完成。
6.输入数据流提供的主要操作方法有:(得到-1,标志数据流结束)int read():从输入流读取一个字节的二进制数据int read( byte [ ] b):将多个字节读到数组中,填满整个数组int read( byte [ ] b ,int off , int len): 从输入流中读取长度为len的数据,从数组b中下标为off的位置开始放置读入的数据,读毕返回读取的字节数。
7.void close(): 关闭数据流int available(): 返回目前可以从数据流中读取的字节数long skip(long l): 跳过数据流中指定数量的字节不读取,返回值表示实际跳过的字节数8.如需要反向读取数据流,则使用回推操作(Push Back)Boolean markSupported(): 用于测试数据流是否支持回推操作void mark(int): 用于标记数据流的当前位置,并划出一个缓冲区,其大小至少为指定参数的大小。
Java高级复习

基本知识点:
1、Thread:系统提供的线程类
start():启动线程
sleep():让当前线程休眠指定的时间
yield():让当前线程让出CPU,然后进行调度
join():只有执行完当前线程后,才能继续执行后面的代码
6、HttpURLConnection:是URLConnection的子类,专门用于HTTP协议。
案例:
1、TCP通信
2、UDP通信
3、Thread(难点非重点)
基本概念:
1、同步:按先后的次序执行。
2、异步:没有次序,同时执行。
3、程序:指令(CPU可以执行的命令)的有序集合。一般以文件的方式存储在硬盘中(是程序的静态表现)。
clazz.getDeclaredConstructor(构造的参数列表):获取类中定义的指定的构造函数
newInstance():调用类的默认构造初始化类的对象
3、Field:表示了类的成员变量
4、Method:表示了类的成员方法
method.invoke(类的对象, 实际参数列表):调用成员方法
2、TCP:传输控制协议,是一个基于连接的协议(要求服务器先启动并在指定的端口上进行监听,然后客户端去请求与服务器连接,连接后才能进行通讯),类似打电话。可以准确无误的传递数据,系统开销较大。
3、UDP:用户数据报协议,是一个无连接的协议(发送方只要把数据发送到指定的端口上就完成了通讯,接收方从指定的端口上接收数据即可),类似发邮件,不能保证数据是否被对方收到,系统开销较小。
5、Constructor:表示了类的构造函数
java08(第8章输入输出流)

在java.io包中定义了很多这二个基本类具体实现 包中定义了很多这二个基本类具体实现 输入输出功能的子类, 输入输出功能的子类,表8.1为部分常用字节输入 为部分常用字节输入 流类和字节输出流子类的功能。 流类和字节输出流子类的功能。
表8.1
类 名 FileInputStream 和 FileOutputStream ByteArrayInputStream和 ByteArrayOutputStream ObjectInputStream 和 ObjectOutputStream FilterInputStream 和 FilterOutputStream DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream
【例8-1 】
1. /* 读取文件 */ 2. import java.io.FileInputStream; 3. import javax.swing.JOptionPane; 4. class Example8_1 5. { public static void main( String args[ ]) 6. { byte buffer[ ] = new byte[2056]; 7. String str; 8. try{ 9. File file=new File("d:/jtest/test.dat"); 10. FileInputStream fileInput = new FileInputStream(file); 11. int bytes = fileInput.read( buffer, 0, 2056 ); //读到的字节数 读到的字节数 12. str = new String( buffer, 0, bytes ); 13. } 14. catch(Exception e) 15. { 16. str= e.toString(); 17. } 18. JOptionPane.showMessageDialog(null,str); 19. System.exit(0); //退出程序 退出程序 20. } 21. }
java 标准输出流

java 标准输出流Java 标准输出流。
Java 标准输出流是 Java 编程语言中的一个重要概念,它提供了一种将数据输出到控制台或其他输出目的地的机制。
在 Java 中,标准输出流通常被称为System.out,它是一个 PrintStream 类的实例。
通过标准输出流,开发人员可以将程序的输出信息发送到控制台,方便调试和查看程序运行状态。
本文将介绍 Java 标准输出流的基本概念、使用方法以及一些常见的应用场景。
1. 基本概念。
Java 标准输出流是 Java I/O 包中的一部分,它是一个输出流,用于向目的地输出数据。
标准输出流通常与 System.out 对象关联,开发人员可以通过System.out.println() 方法将数据输出到标准输出流。
标准输出流是一个字节流,它可以输出字节数据或字符数据。
在 Java 中,标准输出流是一个已经预定义好的输出流,开发人员无需创建新的输出流对象,只需直接使用即可。
2. 使用方法。
使用 Java 标准输出流非常简单,开发人员可以直接通过 System.out 对象调用println() 方法将数据输出到控制台。
例如:```java。
System.out.println("Hello, world!");```。
上述代码将字符串 "Hello, world!" 输出到标准输出流,然后在控制台上显示出来。
除了 println() 方法之外,System.out 对象还提供了其他一些输出方法,如print()、printf() 等,开发人员可以根据需要选择合适的输出方法。
3. 应用场景。
Java 标准输出流在开发中有着广泛的应用场景,它可以用于调试程序、输出程序执行结果、记录程序运行日志等。
在调试程序时,开发人员可以通过标准输出流输出变量的值、方法的执行结果等信息,帮助定位程序中的问题。
在程序执行结果输出时,标准输出流可以将程序的运行结果输出到控制台,方便用户查看。
【黑马程序员】Java IO流学习总结

【黑马程序员】Java IO流学习总结Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
即数根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类•根据处理数据类型的不同分为:字符流和字节流•根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。
本质节流和字符流的区别:•读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映•处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能结论:只要是处理纯文本数据,就优先考虑使用字符流。
除此之外都使用字节流。
输入流和输出流对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据Java IO流对象1.输入字节流InputStream IO 中输入字节流的继承图可见上图,可以看出:1 InputStream 是所有的输入字节流的父类,它是一个抽象类。
2 ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它本地文件中读取数据。
PipedInputStream 是从与其它线程共用的管道中读取数据,与P 3 ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。
2.输出字节流OutputStreamIO 中输出字节流的继承图可见上图,可以看出:1 OutputStream 是所有的输出字节流的父类,它是一个抽象类。
2 ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、PipedOutputStream 是向与其它线程共用的管道中写入数据,3 ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。
字节流与字符流的区别详解

字节流与字符流的区别详解先来看⼀下流的概念:在程序中所有的数据都是以流的⽅式进⾏传输或保存的,程序需要数据的时候要使⽤输⼊流读取数据,⽽当程序需要将⼀些数据保存起来的时候,就要使⽤输出流完成。
程序中的输⼊输出都是以流的形式保存的,流中保存的实际上全都是字节⽂件。
字节流与字符流在java.io包中操作⽂件内容的主要有两⼤类:字节流、字符流,两类都分为输⼊和输出操作。
在字节流中输出数据主要是使⽤OutputStream完成,输⼊使的是InputStream,在字符流中输出主要是使⽤Writer类完成,输⼊流主要使⽤Reader类完成。
(这四个都是抽象类)java中提供了专⽤于输⼊输出功能的包Java.io,其中包括:InputStream,OutputStream,Reader,WriterInputStream 和OutputStream,两个是为字节流设计的,主要⽤来处理字节或⼆进制对象,Reader和 Writer.两个是为字符流(⼀个字符占两个字节)设计的,主要⽤来处理字符或字符串.字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,⽽字节流处理单元为1个字节,操作字节和字节数组。
所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符⽽成的,所以它对多国语⾔⽀持性⽐较好!如果是⾳频⽂件、图⽚、歌曲,就⽤字节流好点,如果是关系到中⽂(⽂本)的,⽤字符流好点所有⽂件的储存是都是字节(byte)的储存,在磁盘上保留的并不是⽂件的字符⽽是先把字符编码成字节,再储存这些字节到磁盘。
在读取⽂件(特别是⽂本⽂件)时,也是⼀个字节⼀个字节地读取以形成字节序列字节流可⽤于任何类型的对象,包括⼆进制对象,⽽字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,⽽字符流就可以字节流是最基本的,所有的InputStrem和OutputStream的⼦类都是,主要⽤在处理⼆进制数据,它是按字节来处理的但实际中很多的数据是⽂本,⼜提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进⾏字符集的转化这两个之间通过InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统⼀⽽造成的==================我们还可以看到:============Reader类的read()⽅法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1inputStream的read()虽然也返回int,但由于此类是⾯向字节流的,⼀个字节占8个位,所以返回 0 到 255范围内的 int 字节值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA中的流概念
流机制是JAVA及C++中的一个重要的机制,通过流能使我们能自由地控制包括文件,内存,IO设备等等中的数据的流向。
如:可以从文件输入流中获取数据,经处理后再通过网络输出流把数据输出到网络设备上;或利用对像输出流把一个程序中的对象输出到一个格式流文件中,并通过网络流对象将其输出到远程机器上,然后在远程机器上利用对象输入流将对象还原。
像这些机制是别的高级语言所不能比拟的。
但要掌握好这些流对象,流的概念是很重要的。
流是一串连续不继的数据的集合,就像水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。
数据写入程序可以是一段一段地向数据流管道中写入数据,这些数据段会按先向顺序形成一个长的数据流。
对数据的读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。
不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
在JAVA中的流按流动方向可以分为输入流及输出流两种,按流的处理位置可分为节点流和包装流。
输入流,输出流是以程序为参考点来说的,所谓的输入流就是程序从中获取数据的流,输出流就是程序要其写数据的流。
在输入流的一边是程序,而另一边就是流的数据源。
而输出流的一边则目标,一边就是程序。
其实流可以想像成是一条长河,在上游有一水库提供水源,河边住着一户人,随时都可以从河边取到水,同时,这户人也可以把一些废水倒进河里,使得废水可以流进大海。
这里所提到河就是一个数据的流动通道,而水库就好比是计算机上的一切数据源,包括磁盘文件,内存,IO设备,键盘等等,JAVA提供了非常完善的输入流类来把这些数据源挂接到流上使得程序能从这些输入流中获取所需的数据。
河边上的用户就是程序,它能随时随地从流中取得数据,只要有数据源挂接到这个通道上可以。
而大海就是程序处理完数据后要流向的目的地,这些目的地包抱磁盘文件,内存,IO设备,显示器等,这些目的地只是相对程序来说的,它们也可能是别的进程的输入流。
如下例子,将数据输出到别的文件,再从文件中读出数据
File f=new File(“1.test”);
Try
{
FileOutputStream out=new FileOutStream(f);
Byte buf[]=”hello world”.getBytes();
Out.write(buf);
Out.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
try
{
FileInputStream in=new FileInputStream(f);
byte buf[]=new byte[1024];
int len=in.read(buf);
System.out.println(new String(buf,0,len));
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
程序用于直接操作目标设备所对应的类叫节点流类,程序也可以通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是包装流类。
在JAVA中。