(完整版)IO流题目

(完整版)IO流题目
(完整版)IO流题目

狂翔IT工作室IO流章节题目

一.选择题

1.java语言提供处理不同类型流的类的包是(D)

a)java.sql b) java.util c) java.math d) java.io

2.不属于java.io包中的接口的一项是(c)

a)DataInput b) DataOutput c) DataInputStream d) ObjectInput

3.java.io包中提供的用于筛选文件名的接口是(d)

a)DataInput b) DataOutputStream c)RandomAccessFile d) FileNameFilter

4.下列中,哪一个是filterInputStream类构造方法的有效参数c

a)无参数b)OutputStream对象

c) InputStream对象d)RandomAccessFile对象

5. ByteArrayOutputStream将下列哪一项作为输出流 c

a) 字符b)字节c)字节数组D)对象

6. 下列流中哪一个使用了缓冲区技术A

A.BuffereOutputStream B. FileInputStream

C. DataOutputStream

D.FileReader

7. 下列哪个包中含有压缩文件输入流ZipInputStream类B

A.java.io

B. java.util.zip

C.java.util.jar

D.java.awt

8. 要在磁盘上创建一个文件,可以使用哪些类的实例

A.File

B.FileOutputStream

C.RandomAccessFile

D.以上都对

9.下列字节输入流中,哪一个不能够被实例化B

A.FileInputStream

B.FilterInputStream

C.ByteArrayInputStream

D.ObjectInputStream

10. 能对读入字节数据进行java基本数据类型判断过滤的类是(C)

A. PrintStream

B.DataOutputStream

C.DataInputStream

D.BuffereInputStream

11. 使用下列哪一个类可以实现在文件的任意一个位置读写一个记录

A.RandomAccessFile

B.FileReader

C.FileWriter

D.FileInputStream

12.通常情况下,下列哪一个类的对象可以作为BufferedReader类的构造函数的参数

A.InputStreamReader

B.PrintStream

C.OutputStreamReader

D.PrintWriter

13. 若要创建一个新的含有父目录的目录,应该使用下列哪一个类的实例

A.RandomAccessFile

B.FileOutputStream

C.File

D.以上都对

14. 流的概念是由以下哪个语言最先引的

A.C

B.C++

C.Java

D.Basic

15. 下列哪一个不属于计算机常用的外部设备

A.显示器

B.网络

C.内存

D.键盘

16. 与InputStream流相对应的Java系统的标准输入对象是

A.System.in

B.System.out

C.System.err

D.System.exit()

17. 下列File类的方法中,哪一个用于返回文件的相对的文件名

A.getCanonicalPath()

B.getAbsolutePath()

C.getCanonicalFile()

D.getAbsoluteFile()

18. 下列哪个不属于j2sdk1.4 提供的新I/O功能

A.内存映射

B.文件锁定

C.字符及编码

D.阻塞I/O

19.下列选项中,哪一个属于输出流

A.从打印机流向控制器的数据流

B.从键盘流向内存的数据流

C.从内在流向控制器的数据流

D.从内存流向网络的数据流

20.FileOutputStream类的父类是()

A.File

B.FileOutput

C.OutputStream

D.InputStream 二.填空题

1. Java的I/O流包括字节流、字符流、文件流、对象流和管道流

2. 按照流的方向来分,I/O流包括输入和输出流

3. 流是一个流动的数据从流向

4. FileInputStream实现对磁盘文件的读取操作,在读取字符的时候,它一般与

InputStreamReader 和BufferedReader 一起

5. 向DataOutputStream对象dos 的当前集团处写入一个保存在变量f中的浮点数的语

句是dos.writeDouble(f)

6. java通过过滤流对I/O访问提供同步处理机制

7. FileChannel类为磁盘文件映射入内存提供了一个通道

8. 输入输出在计算机中有两个主要作用:采集数据和提供数据处理结果。

9. ByteArrayInputStream以字节数组作为输入流。

10PrintStream类是字节输出流特有的类,实现了将java基本数据类型转换为字符串表示

11. BufferedInputStream类是FilterInputStream 类的子类。

12.在Java.io中,可以直接访问内存的类有ByteArrayOutputStream 、ByteArrayInputStream和StringBufferInputStream

13. 进行字节输入流的数据来自二进制数文件的时候,FileInputStream 对象的构造方法的参数是该二进制文件

14. 流在传输过程中的串行的

15. 在java语言中,实现多线程之间通信的流是管道流

16. 在数据传输过程中,对数据进行某种类型的加工处理,这一过程称做过滤

17. StringReader类可以将一个String 对象作为一个字符输入流使用

18. 向文件对象写入字节数据应该使用FileInputStream 类,而向一个文件里写入文本应该使用DataInputStream 类

19. InputStreamReader类是以字节输入流作为数据源的字符输入流。

20. Java.io包中同时兼有输入输出类是RandomAccessFile 。

三.问答题

1.字符类输入流有哪些

答:字符类输入流都继承自Reader类,实现从数据源读取Unicode码序列的操作

(1)FileReader类继承自InputStreamReader类,用于读取Unicode码序列的操作。

(2)BufferedReader类继承自Reader类,它使用缓存技术,提高了字符传输的效率(3)InputStreamReader类和BufferedReader类都继承自Reader类

(4)Reader类包含的方法有:read(),skip(),mardSupported(),mark(),reset()等

(5)InputStreamReader类包含的方法有:getEncoding(),InputStreamReader(),close()等(6)BuffereReader类包含的方法有:readLine(),BufferedReader()等

2.字符类输出流有哪些

答:字符类输出流继承自Writer类,实现向数据目的地输出Unicode码序列的操作(1)PrintWriter和OutputStreamWriter是Writer的子类

(2)PrintWriter类用于输出字符,其方法println()实现向输出流写入字符数据。

(3)OutputStreadWriter类的子类FileWriter,实现向文本文件写入字符数据

(4)Writer类包含的方法:writer() flush()等

(5)OutputStreamWriter类包含的方法:OutputStreamWriter(),close()等

(6)BufferedWriter类包含的方法:newLine(),BufferedWriter()等

3.简要说明过滤流

答:在Java中,过滤流提供了对I/o的同步处理机制。java.io包中的FilterInputStream 和FileOutputStream抽象类实现了过滤流

(1)使用过滤流之前,需要将该过滤流和一个I/O流相连

(2)BufferedInputStream和BufferedStream类分别继承自FilterInputStream和FileOutputStream类,使用缓冲技术,提高了效率。

(3)DataInputStream和DataOutputStream可以用于读写Java语言的基本数据类型,不用做转换

4.简要说明管道流

答:在JA V A 中,不同的Java程序、线程或化代码段相互之间的数据交换通过管道流实现。java.io包中2个类:PipedInputStream和PipedOutputStream类实现了管道机制。

5.简要说明文件数据流

6.如果要利用read()方法取得输入数据流的下一个字节数据,并希望可以将所取得的数据转存成字符(char)数据类型,应该如何做?

7. 字节数据流(Byte Streams)向上继承于哪两个主要的抽象类?

8. 什么是格式化输入输出数据流?在java中哪两个类属于格式化输入输出数据流?

9. 何谓管理(pipe)处理?Java中负责管道处理的字节数据流包是什么?

10. 在文件数据流包(java.io.File)中主要包含哪些类和接口以供程序开发人员轻松地掌握文件的管理操作?

Java多线程和输入输出流

班级:13科技2班学号:201324131225 姓名:许耿宁 Java多线程和输入输出流 一、实验目的: 1.熟悉利用Thread类建立多线程方法。 2.熟悉利用Thread接口建立多线程方法。 3.熟悉Java的文件读写机制,练习输入输出流的使用。 二、实验内容: 1.阅读下列程序,分析并上机检验其功能。 public class DelayRunnable implements Runnable{ private static int count=0; private int no; private int delay; public DelayRunnable(){ count++; no=count; } public void run(){ try{ for (int i=0;i<10;i++){ delay=(int)(Math.random()*5000); Thread.sleep(delay); System.out.println("Thread "+no+" with a delay "+delay); } }catch(InterruptedException e){} } } class MyRunnable{ public static void main(String args[]){ DelayRunnable r1 = new DelayRunnable();

DelayRunnable r2 = new DelayRunnable(); Thread thread1=new Thread(r1); Thread thread2=new Thread(r2); thread1.start(); thread2.start(); try{ Thread.sleep(1000); }catch(InterruptedException e){ System.out.println("Thread wrong"); } } } 2.将上列程序利用Runnable接口改写,并上机检验。 3.创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。 4.键盘输入10个整数,从小到大进行排序。 5.接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用 FileOutputStream类读出文件内容显示在屏幕上。 6.将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。 三、实验要求: 1.通过实验掌握Thread 、Runnable使用方法; 2.程序必须能够实现多线程; 3.程序必须能够完成题目要求; 4.通过实验掌握文件输入输出流的使用方法; 5.程序必须能够从键盘接收字符串并保存在文件中; 6.程序必须能够读出文件内容显示在屏幕上; 7.写出实验报告。 四、实验代码及截图: 第一题: 在编译器上运行程序得到截图所示结果:

JAVA输入输出流--字节流篇(什么时候用哪个)

1流的概念 stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图: 在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型: (1)字节流 表示以字节为单位从stream中读取或往stream中写入信息,即io包中的inputstream类和outputstream类的派生类。通常用来读取二进制数据,如图象和声音。 (2)字符流 以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。 区别: Reader和Writer要解决的,最主要的问题就是国际化。原先的I/O类库只支持8位的字节流,因此不可能很好地处理16位的Unicode字符流。Unicode是国际化的字符集(更何况Java内置的char就是16位的Unicode 字符),这样加了Reader和Writer之后,所有的I/O就都支持Unicode了。此外新类库的性能也比旧的好。 但是,Read和Write并不是取代InputStream和OutputStream,有时,你还必须同时使用"基于byte的类"和"基于字符的类"。为此,它还提供了两个"适配器(adapter)"类。InputStreamReader负责将InputStream转化成Reader,而OutputStreamWriter则将OutputStream转化成Writer。实际上是通过byte[]和String来关联。在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的。 以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,只是在操作时的导向不同。

输入与输出流和线程习题

输入与输出流 一、选择题 1.流的传递方式是(B) A. 并行的 B. 串行的 C. 并行和串行 D. 以上都不对 2.下列不是java的输入输出流的是(A) A. 文本流 B. 字节流 C. 字符流 D. 文件流 3.凡是从中央处理器流向外部设备的数据流称为(D) A. 文件流 B. 字符流 C. 输入流 D. 输出流 4.获取一个不包含路径的文件名的方法为(A) A. String getName( ) B. String getPath( ) C. String getAbslutePath( ) D. String getParent( ) 5.下列属于文件输入输出类的是(D) A. FileInputStream和FileOutputStream B. BufferInputStream和BufferOutputStream C. PipedInputStream和PipedOutputStream D. 以上都是 6.下列不属于FileInputStream输入流的read()成员函数的是(D) A. int read(); B. int read(byte b[]); C. int read(byte b[],int offset,int len); D. int read(int line); 7.当处理的数据量很多,或向文件些很多次小数据,一般使用(C)流 A. DataOutput B. FileOutput C. BufferedOutput D.PipedOutput 8.当把一个程序、线程或代码段的输出连接到另一个程序、线程或代码短的输入时,应使用(D)流 A. DataOutput B. FileOutput C. BufferedOutput D. PipedOutput 9.当要将一文本文件当作一个数据库访问,读完一个纪录后,跳到另一个纪录,它们在文

Java输入、输出流

第八章输入输出流 【课前思考】 1.字节流和字符流的基类各是什么? 2.什么是对象的串行化?对象串行化的作用是什么? 【学习目标】 本讲主要讲述了java语言中的输入/输出的处理,通过本讲的学习,同学们可以编写更为完善的java 程序。 【学习指南】 仔细阅读本章各知识点的内容, 深刻理解 java 语言中输入/输出流的处理方法,掌握处理问题的方法,多练习,多上机。 【难重点】 ●遇到实际问题时,要根据需要正确使用各种输入/输出流,特别是对中文使用适当的字符输入流。 ●正确使用对象串行化的方法。 ●处理字符流时,其构造方法的参数是一个字节流。 ●对象串行化的概念。 【知识点】 ●I/O 流概述 ●文件处理 ●过滤流 ●字符流的处理 ●对象的串行化 ●其它常用的流 【内容】 第一节数据流的基本概念 理解数据流 流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数人流,而屏幕则只是一个输出流。 Java的标准数据流 标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种: 标准输入studin,对象是键盘。 标准输出stdout,对象是屏幕。 标准错误输出stderr,对象也是屏幕。 例 8.1 从键盘输入字符。 本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,count保存实际读入的字节个数,再以整数和字符两种方式输出buffer中的值。Read方法在java.io包中,而且要抛出IOException异常。程序如下: import java.io.*; public class Input1 { public static void main(String args[]) throws IOException { System.out.println("Input: ");

java输入输出流和文件操作

Java IO流和文件操作Java流操作有关的类或接口: Java流类图结构:

1、File类 File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。 构造方法摘要 File(File parent, String child) File(String pathname) File(String parent, String child) 构造函数 创建方法 1.boolean createNewFile() 不存在返回true 存在返回false 2.boolean mkdir() 创建目录 3.boolean mkdirs() 创建多级目录 删除方法 1.boolean delete() 2.boolean deleteOnExit() 文件使用完成后删除 例子1:列出指定文件夹的文件或文件夹 public class FileDemo1 { public static void main(String[] args){ File[] files =File.listRoots(); for(File file:files){

System.out.println(file); if(file.length()>0){ String[] filenames =file.list(); for(String filename:filenames){ System.out.println(filename); } } } } } 例子2:文件过滤 import java.io.File; public class FileTest2 { public static void main(String[] args) { File file = new File("file"); String[] names = file.list(); for(String name : names) { if(name.endsWith(".java")) { System.out.println(name); }

(完整版)5Java第五单元练习题-输入流与输出流

5 Java 输入流与输出流 5.1 单项选择题 1.实现字符流的写操作类是( A . FileReader B . Writer C )。 . FileInputStream D . FileOutputStream 2. 实现字符流的读操作类是( )。 A . FileReader B . Writer C . FileInputStream D . FileOutputStream 3.凡是从中央处理器流向外部设备的数据流称为() A. 文件流 B. 字符流 C. 输入流 D. 输出流 4.构造 BufferedInputStream 的合适参数是哪一个?( ) A . FileInputStream B . BufferedOutputStream C . File D . FileOuterStream 5.在编写 Java Application 程序时,若需要使用到标准输入输出语句,必须在程序的开 头写上( )语句。 D . import java.awt.Graphics ; 6.下列流中哪个不属于字符流?( A . InputStreamReader C . FilterReader 7.流的传递方式是() A. 并行的 B. 串行的 C. 并行和串行 D. 以上都不对 8.字符流与字节流的区别在于( ) A. 前者带有缓冲,后者没有 B. 前者是块读写,后者是字节读写 C. 二者没有区别,可以互换使用 A . import java.awt.* ; B import java.applet.Applet ; C . import java.io.* ; ) B . BufferedReade r D . FileInputStream

Java的输入与输出流(实验报告)

成都大学实验报告 实验项目名称Java的输入与输出流 一、实验目的: 1. 理解I/O流的概念,掌握其分类 2. 掌握文本文件读写、二进制文件读写 二、实验内容(包括源程序及相关说明): 1. 分别使用FileWriter 和 BufferedWriter 往文件中写入10万个随机数,比较用时。源代码如下: (1) import .*; public class Ex1_1 { public static void main(String[] args) throws IOException{ long t=(); FileWriter fw =new FileWriter("d:\\"); for(int i=1;i<=100000;i++) { ((int)()*10000)+" \n"); } (); t=()-t; "The elapsed: "+t); } } (2) import .*; public class Ex1_1 { public static void main(String[] args) throws IOException{ long t=(); BufferedWriter fw=new BufferedWriter(new FileWriter("d:\\")); for(int i=1;i<=100000;i++){

((int)()*10000)+"\n"); } (); t=()-t; "The elapsed: "+t); } } 2. 生成一个 html文件,使其能显示2的幂次(0~9)的表格如下: 代码如下: import .*; public class Ex1_1 { public static void main(String[] args) throws IOException{ BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\")); ("

"); (); (""); for(int i=0;i<=9;i++){ (""); } ("
Power of 2Value
"+i+""+(i, 2)+"
"); (); (); } } 3. 在文本文件中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。 第一种实现方法 代码如下: import class EXP1_1 { public static void main(String[] args) throws IOException{ long t =(); String filename="D:\\"; FileInputStream fis=new FileInputStream(filename); int count=0;

输入输出流

第十章 输入/输出流
程序在运行时通常要和外部进行交互, 即从外部读取数据或向外部设备发送数据, 这就 是所谓的输入/输出(Input/Output)。 数据可以来自或者发往文件、 内存、 另一个程序或网络。 数据也可有不同的格式,例如可以是各种编码(ASCII 码或 Unicode 码等)的字符串、图像、 声音或对象等等。 Java 语言使用抽象概念——流来描述程序与数据发送或接收者之间的数据 通道。使用输入/输出流,程序员可以方便灵活和安全地实现输入输出功能。
§10.1 输入/输出基本概念
10.1.1 外部设备与文件
我们可以从不同角度对外部设备进行分类。 按照外部设备的工作特性, 我们可将外部设 备分为两类:存储设备和输入/输出设备。 存储设备用于存储信息,包括硬盘、软盘、磁带、光盘等。程序可将数据写入到这些设 备上,也可从这些设备读出数据,数据通常组织为文件形式。这类设备上存储的数据在物理 上往往是按字符块组织的,因而又将它们称为块设备。 输入/输出设备又可分为输入设备和输出设备。 输入设备是计算机用于接受外界信息的 设备,诸如键盘、鼠标、扫描仪等均为输入设备;输出设备是将计算机处理完毕的数据送往 外界的设备,诸如显示器、打印机、绘图仪等均为输出设备。由于这两类设备上的数据往往 是以字符为单位组织的,所以又称它们为字符设备。 计算机程序要与外界进行交互就必须使用相应的机制与输入/输出设备打交道。 程序的 输入是指从输入设备接收数据,程序的输出是指将数据传递给外部设备。 早期的高级程序设计语言对特定的外部设备提供特定的输入/输出操作, 这导致设计出 来的程序代码可移植性很差。后来引入了文件(file)的概念,在程序中不仅可以声明文件 并将文件作为输入/输出的对象, 而且还可以在文件与某个外部设备之间建立关联, 将文件 作为输入设备与输出设备的抽象描述。 目前文件已成为高级程序设计语言输入/输出机制的 基本概念。 一个文件必须有一个由用户命名的唯一名字。 文件可用于存储程序和数据, 还可用于提 高程序的设备无关性, 所谓设备无关性不仅指程序要独立于同类设备的具体台号, 而且还要 独立于设备的类型。 当我们的程序向屏幕或打印机输出时, 不必考虑使用的是哪一种型号的 显示器或打印机。 在操作系统中, 输入/输出设备被视作一种特殊的文件, 这类文件的名字是由操作系统 预先规定好的。例如在 MS-DOS 中显示器被命名为 CON 的文件(控制台终端 console 的缩 写) 、打印机被命名为 PRN 的文件(printer 的缩写) 。这样,程序的输入/输出操作采用了 与文件统一的方式,而不用理会实际的物理设备是什么。
10.1.2 文件的基本概念
Java 语言将文件看作是字节的序列, 即由一个个字节的数据顺序组成。 例如我们要将一 个班全体学生的基本资料存放在一个文件中, 文件中的数据并不是由学生记录组成的, 而是 由一个个字节组成的。 如何将文件中的这些字节组织为记录是由程序完成的, 文件本身并没 有划定任何边界。因而这种文件又称为流式文件(stream file) 。 (1)文本文件与二进制文件 根据文件中数据的组织形式, 可将文件分为文本文件和二进制文件两类。 文本文件存放 的是 ASCII 码(或其他编码的)字符,使用 Windows 操作系统的记事本打开可正确查看其
-1-

java输入输出流总结

一、数据流的基本概念 流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数人流,而屏幕则只是一个输出流。 java的标准数据流:标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种: 标准输入studin,对象是键盘。 标准输出stdout,对象是屏幕。 标准错误输出stderr,对象也是屏幕。 二、java.io包中的数据流和文件类 字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。 InputStream、OutputStream FileInputStream、FileOutputStream PipedInputStream、PipedOutputStream ByteArrayInputStream、ByteArrayOutputStream FilterInputStream、FilterOutputStream DataInputStream、DataOutputStream BufferedInputStream、BufferedOutputStream 字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。 Reader、Writer InputStreamReader、OutputStreamWriter FileReader、FileWriter CharArrayReader、CharArrayWriter PipedReader、PipedWriter FilterReader、FilterWriter BufferedReader、BufferedWriter StringReader、StringWriter 三、字节流方法 InputStream 和OutputStream read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close():关闭流 int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。 int read(byte b[]) :读多个字节到数组中。 int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引of f开始的位置,并返回读取得字节数。 write(int b) :将一个整数输出到流中(只输出低位字节,抽象) write(byte b[]) :将字节数组中的数据输出到流中 write(byte b[], int off, int len) :将数组b中从off指定的位置开始,长度为len的数据输出到流

输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O 流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO。 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 Java IO模型 : Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。 2.数据流的基本概念 数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。 “流是磁盘或其它外围设备中存储的数据的源点或终点。” 在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢? 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛: 标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

5Java第五单元练习题-输入流与输出流

5Java输入流与输出流 5.1单项选择题 1.实现字符流的写操作类是()。 A.FileReader B.Writer C.FileInputStream D.FileOutputStream 2. 实现字符流的读操作类是()。 A.FileReader B.Writer C.FileInputStream D.FileOutputStream 3.凡是从中央处理器流向外部设备的数据流称为() A. 文件流 B. 字符流 C. 输入流 D. 输出流 4.构造BufferedInputStream的合适参数是哪一个?() A.FileInputStream B.BufferedOutputStream C.File D.FileOuterStream 5.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上()语句。 A.import java.awt.* ; B.import java.applet.Applet ; C.import java.io.* ; D.import java.awt.Graphics ; 6.下列流中哪个不属于字符流?() A.InputStreamReader B.BufferedReader C.FilterReader D.FileInputStream 7.流的传递方式是() A. 并行的 B. 串行的 C. 并行和串行 D. 以上都不对 8.字符流与字节流的区别在于() A.前者带有缓冲,后者没有 B.前者是块读写,后者是字节读写 C. 二者没有区别,可以互换使用

D. 每次读写的字节数不同 9.下列流中哪个不属于字节流() A.FileInputStream B.BufferedInputStream C. FilterInputStream D. InputStreamReader 10.如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象()A.FileInputStream B.FileOutputStream C.DataOutputStream D.FileWriter 11. 下列哪一个import命令可以使我们在程序中创建输入/输出流对象() A.import java.sql.*; B.import java.util.*; C.import java.io.*; D.import https://www.360docs.net/doc/408594109.html,.*; 12.下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。 File f = new File(填代码处); file =new FileReader(f); in=new BufferedReader(file); A."./1.txt" B."../my/1.txt" C."c:\\my\\1.txt" D."c:\ my\1.txt" 13.下面语句的功能是( )。 RandomAccessFile raf2 = new RandomAccessFile("1.txt","rw" ); A.打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。 B.打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。C.打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。D.以上说法都不对。 14.下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( )。 import java.io.*; public class Test { public static void main(String args[]) { try { String s="ABCDE"; byte b[]=s.getBytes(); FileOutputStream file=new FileOutputStream("test.txt",true); file.write(b); file.close(); } catch(IOException e) { System.out.println(e.toString()); } } }

输入输出流总结

输入、输出流总结 一、理解数据流 流一般分为输入流(Input Stream)和输出流(Output Stream)两类。 二、Java的标准数据流 标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种: 标准输入studin,对象是键盘。 标准输出stdout,对象是屏幕。 标准错误输出stderr,对象也是屏幕。 三、字节流方法 字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。 InputStream、OutputStream FileInputStream、FileOutputStream PipedInputStream、PipedOutputStream ByteArrayInputStream、ByteArrayOutputStream FilterInputStream、FilterOutputStream DataInputStream、DataOutputStream BufferedInputStream、BufferedOutputStream 1、InputStream 和OutputStream read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close():关闭流 int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。 int read(byte b[]) :读多个字节到数组中。 int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取得字节数。 write(int b) :将一个整数输出到流中(只输出低位字节,抽象) write(byte b[]) :将字节数组中的数据输出到流中 write(byte b[], int off, int len) :将数组b中从off指定的位置开始,长度为len的数据输出到流中 flush():刷空输出流,并将缓冲区中的数据强制送出 close():关闭流 例:打开文件。 本例以FileInputStream的read(buffer)方法,每次从源程序文件OpenFile.java中读取512个字节,存储在缓冲区buffer中,再将以buffer中的值构造的字符串new String(buffer)显示在

输入输出流

JAVA IO 一)File 类是IO类里唯一操作文件类构造方法为: new File(String filePath) 常用的方法: f.exists() f.delete() f.createFile() f.mkdirs() File[] f = f.listFile() –显示文件名和文件路径String[] s = f.list() --- 显示文件名; 二) OutPutStream 字节输出流–抽象类子类:FileOutPutStream -- 一般报异常是FileNotFoundException OutPutStream outS = new FileOutPutStream(File f); OutPutStream outS = new FileOutPutStream(File f,Boolean b); 当b =true 时表示在文件末尾追加内容这样前面写的内容任然在. 以下就是字节输出流把字符串文字输出到bfh.txt文件里 String pathname = "e:/bfh.txt "; File f = new File(pathname); OutputStream out = new FileOutputStream(f); String str = "祝贺百均成公司sfq"; byte[] b = str.getBytes(); ---- 字节流只能以字节数组形式输出 try { out.write(b); for(int i =0;i

输入输出流

输入输出流是一个常把人搞晕的概念,问题出在哪儿?问题出在我们犯了习惯性思维的毛病,落入了“输入”、“输出”两词制造的陷井。 一讲到输入流,我们常常会不言而喻地把它理解为这个对象是用来读其他对象的,如把字节数组、字符串等读进来;同样,一说到输出流,常常会把它理解为,这个对象就是用来输出的,如把字节数组、字符串的内容输出来或写出来,等等。要是这样理解,整好把它们理解错了个180度。实际上我们首先应当把输入流和输出流分别这样理解:输入流的核心机能是把属于“自已缓冲区的”内容一个符一个符地读出来(可称为吐出来),展现给你;输出流的核心机能是把其它对象的内容一个符一个符地“写到属于自已的内存缓冲区”里去(可称为吃进去)。下面我们来具体看一看: (一)ByteArrayInputStream(字节数组输入流) 从字面上看ByteArrayInputStream是输入流,其实,我们对它的应用主要是把存放在它内部的东东(或者说把与它有联系的字节数组)一个一个字节地或成组地读(read)出来。当我们想对一个字节数组一个字节一个字节进行过滤的时候,可以用它来实现。 使用这个类通常用以下几个步骤与方法 (1)创建实例(也有的叫创建对象)。如: byte buffer[]={'T','e','s','t'};//可以用其他方法制作数组。 ByteArrayInputStream inStream=new ByteArrayInputStream(buffer); (当然还有另外的构造方法) inStream即为实例。这一步的作用,我们可以把它理解为inStream把buffer数组一次性地复制到自已内部的缓冲区,以后,inStream内部的各方法如read、skip、available、reset的操作对象就是这个内部缓冲区。也就是说,我们可以认为,imStream内部有一个private(私有的)缓冲区,这个缓冲区被封装在inStream内,只有inStream的方法可以对它操作,外界是不可以直接读写这个缓冲区的。构造inStream的过程,就是复制外部字节数组到inStream 私有缓冲区建立inStream的过程。 (2)让inStream来完成我们所要完成的任务。 你要让inStream来完成你想要完成的任务,必须是inStream所能完成的,也就是说,inStream 必须要有相应的方法。inStream有哪些方法呢,有以下一些: public synchronized int read() 就是把实例缓冲区的内容一个字节一个字节地读出来,这是这个类最有价值的方法 public synchronized int read(byte b[],int offset,int length) 读出多个字节(到b数组),返回值一般为读到的字节数。但读到末尾时返回-1。 Public synchronized long skip(long n) 调用这个方法我们可以跳过我们想要跳过去的n个字节,当然,跳过的字节数必须是符合实际的(返回的就是跳过的字节数) public synchronized int available 调用这个方法我们可以得到私有缓冲区的字节数 public synchronized void reset() 调用这个方法我们可以把私有缓冲区的指针调回到起始处,以便我们可以再重新来一次 等等。 这些方法的详细描述和具体使用我就不赘述了,要了解详情请查阅有关资料。 (二)ByteArrayOutputStream(字节数组输出流) 从字表看,ByteArrayOutputStream是输出流,问题是输出谁,输出到哪儿?哪儿是源,哪儿是目的地?其实我认为这个类也有它自已的private缓冲区(下称私有缓冲区),与ByteArrayInputStream不同的是,这个缓冲区是专门用来从外界吃字符进来的缓冲区,这个吃进来的动作是由该类的write方法来实现的。 使用这个类通常用以下几个步骤与方法: (1)创建实例。 创建实例的方法是: ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 或者是如: long num=1024*1024; ByteArrayOutputStream outStream = new ByteArrayOutputStream(num); 第二种方法创建了一个输出流实例,其中这个输出流的私有缓冲区长为1024*1024。很明显,

文件输入输出流

C++中的文件输入/输出收藏 简介 本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。 你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include void main() //程序从这里开始运行 { ofstream SaveFile(“cpp-home.txt”); SaveFile << “Hello World, from https://www.360docs.net/doc/408594109.html, and Loobian!”; SaveFile.close(); } 仅仅如此吗?没错!这个程序将在当前运行目录下建立一个名为cpp-home.txt的文件,并向它写入“Hello World, from https://www.360docs.net/doc/408594109.html, and Loobian!”。 下面给出各行的含义: #include ——你需要包含此文件以使用C++的文件输入/输出函数。注意:一旦包含了这个文件,你不再需要(为了使用cout/cin)包含iostream.h,因为fstream.h已经自动包含了它。 在这个头文件中声明了若干个类,包括ifstream,ofstream及fstream,它们都继承自istream 和ostream类。 ofstream SaveFile(“cpp-home.txt”); 1)ofstream即“output file stream(输出文件流)”。它将建立一个句柄(handle),以便我们以后能以一个文件流的形式写入文件。 2)SaveFile——这是文件句柄的名字,当然,你还可以换用任何一个你想要的名称。 3)(“cpp-home.txt”); ——打开名为cpp-home.txt的文件。如果程序运行的当前目录已经存在这样一个文件,则它将被替换掉;万一不存在,程序也会为你创建一个为文件,你不必为此而担心。 现在,让我们稍微深入一点点。首先,我要指出的是:ofstream是一个类。因此ofstream SaveFile(“cpp-home.txt”);这一语句将创建一个该类的对象;而我们在括号中所传递的参数实际上将传给构造函数:在这里我们将我们要建立的文件的名称作为实际参数传递给了该类的构造函数。当然,我们还可以传递其它的一些信息,不过我以后再对其进行讲解。 SaveFile << “Hello World, from https://www.360docs.net/doc/408594109.html, and Loobian!”;——“<<”看起来是不是很亲切?不错,想必你已经在cout << 中见到过。这是一个预定义好的运算符。不管怎么

Java的输入与输出流(实验报告)

大学实验报告 实验项目名称Java的输入与输出流 一、实验目的: 1. 理解I/O流的概念,掌握其分类 2. 掌握文本文件读写、二进制文件读写 二、实验容(包括源程序及相关说明): 1. 分别使用FileWriter 和 BufferedWriter 往文件中写入10万个随机数,比较用时。源代码如下: (1) import java.io.*; public class Ex1_1 { public static void main(String[] args) throws IOException{ long t=System.currentTimeMillis(); FileWriter fw =new FileWriter("d:\\Ex1.txt"); for(int i=1;i<=100000;i++) { fw.write((int)(Math.random()*10000)+" \n"); } fw.close(); t=System.currentTimeMillis()-t; System.out.println("The elapsed: "+t); } } (2) import java.io.*; public class Ex1_1 { public static void main(String[] args) throws IOException{ long t=System.currentTimeMillis(); BufferedWriter fw=new BufferedWriter(new FileWriter("d:\\Ex1.txt")); for(int i=1;i<=100000;i++){

相关文档
最新文档