java字节流和字符流

java字节流和字符流
java字节流和字符流

字节流和字符流

在整个IO包中,流的操作分为两种:

·字节流

|·字节输出流OutputStream、字节输入流InputStream

·字符流:一个字符= 两个字节

|·字节输出流Writer,字节输入流Reader

IO操作的基本步骤:

1、使用File找到一个文件

2、使用字节流或字符流的子类为OutputStream、InputStream、Writer、Reader

进行实例化操作

3、进行读写的操作

4、关闭:close(),在流的操作中最终必修进行关闭。

字节输出流:OutputStream

在Java io中OutputStream是字节输出流的最大父类。

此类是一个抽象类,所以使用时修要依靠子类进行实例化操作。

如果此时要完成文件的输出操作,则使用FileOutputStream为OutputStream进行实例化操作:

OutputStream out = new FileOutputStream(File f)

OutputStream提供了一下的写入数据的方法:

·写入全部字节数组:pubic void writer (byte[] b)throws IOException

·写入部分字节数组:public void writer(byte[] b ,int off,int len)throws IOException

如果要向文件中追加内容则需要调用FileOutputStream类的另外一个构造方法:

pubic OutputStream(File file ,booleam append) throws FileNotFoundException,如果将append的

字节输入流:InputStream

使用InputStream可以读取输入流的内容

此类也是一个抽象类,同样需要使用子类对象进行实例化,如果现在是文件操作则使用FileInputStream,

·FileInputStream的构造方法:

public FileInputStream(File file) throws FileNotFoundException

·将内容读入字节数组中:pubic int read(byte[] b)throws IOException

·每次读入一个数据:public abstract void read (int b)throws IOException

范例:将文件中的内容读取进来

以上是一种比较常见的读取形式,但是以上的代码有一个缺点,会受到开辟空间大小的限制,如果想动态的开辟数组空间,则可以根据文件的大小来决定。采用read()方法一个个

字符输出流:Writer

Writer类是IO包中操作字符的最大父类,主要功能是完成字符流的输出。

Writer类同OutputStream类一样,都属于抽象类,如果要进行文件的保存,则使用FileWriter类进行实例化。

写入操作:public void write(String str)throws IOException,不再用将String转换为byte

追加内容:

字符输入流:Reader

Reader与OutputStream的不同的是使用的是char数组Reader是一个抽象类,进行文件读取要使用FileReader 读取的方法:

字符流于字节流的区别

字节流在操作的时候是直接与文件本身关联,不使用缓冲区

|·字节流——>文件

字符流在操作的时候是通过缓冲区与文件关联

|·字节流——>缓冲区——>文件

综合比较,在传输或者在硬盘上保存的内容都是以字节的形式存在的,所以字节流的操作比较多,但是在操作中文的时候字符流比较好使;

作业

使用IO操作完成一个文件的拷贝功能,模仿DOS中的copy名令,代码开发的时候使用java 的初始化参数完成,

公司内部Javaio流笔试题

公司内部Javaio流笔试题

IO 框架 Key Point * File 类 * 流的分类 * 基本字节流 * 字节过滤流 * 基本字符流、桥转换 * 字符过滤流 * 对象序列化 练习 1. (File 类)以下关于File 类说法正确的是: A.一个File 对象代表了操作系统中的一个文件或者文件夹 B.能够使用File 对象创立和删除一个文件 C.能够使用File 对象创立和删除一个文件夹 D.当一个File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除2. (File 类)有如下代码: public class TestFile{ public static void main(String args[]){ File file = new File(“chp13/corejava.txt”); } } 请选择一个正确答案: A. corejava.txt 文件在系统中被创立 B. 在windows 系统上运行出错,因为路径分隔符不正确 C. corejava.txt 文件在系统中没有被创立

D. 如果corejava.txt 文件已存在,则抛出一个异常 3. (File 类)将下列代码补充完整 class TestMyFile{ public static void main(String args[]) throws Exception{ File file; //创立一个File 对象表示当前目录下的“hello.txt”文件 //判断该文件是否存在 //如果该文件存在,则输出该文件的完整路径 } } 4. (流的分类)对于FileInputStream 来说,从方向上来分,它是_________流,从数据单 位上分,它是__________流,从功能上分,它是____________流。 5. (字节流, FileInputStream)FileInputStream 有三个重载的read 方法,其中 1) 无参的read 方法返回值为___类型,表示_________________ 2) int read(byte[] bs)方法返回值表示______________,参数表示 ________________ 3) int read(byte[] bs, int offset, int len) 方法返回值表示 _______________,参数分别表示 ___________________________。 6. (FileInputStream)下面关于FileInputStream 类型说法正确的是: A.创立FileInputStream 对象是为了读取硬盘上的文件 B.创立FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常 C.利用FileInputStream 对象能够创立文件 D.FileInputStream 对象读取文件时,只能读取文本文件。

[原创]java创建ISO8583报文字符流

[原创]java创建ISO8583报文字符流 /* * 创建日期2005-8-26 * * TODO 要更改此生成的文件的模板,请转至 * 窗口-首选项-Java -代码样式-代码模板*/ package com.trade;import java.util.HashMap;/** * @author GYGT * * TODO 要更改此生成的类型注释的模板,请转至 * 窗口-首选项-Java -代码样式-代码模板*/ public class ProduceTradeMessage { //域号字长属性 private HashMap fieldPro; //域号最大字长 private HashMap fieldLen;

//输入域值 private HashMap inputField = new HashMap(); private HashMap hexmap = new HashMap(); //报文字长 private String TradeLength; //报文类型长度 private String TradeType; //64位域号 private String Field64; //128位域号 private String Field128; //域值 private String FieldContent; //报文字符流 private String TradeMessage; public ProduceTradeMessage(){ inputField();

hexmap(); } /** * 对参数进行设置 ------------------------------------------------------------------------------------------------ * */ private void inputField(){ inputField.put("2","22"); // 两位变长,最大长度22位 inputField.put("3","aaaaaa"); // 6位定长 inputField.put("4","aaaaaaaaaaaa"); // 12位定长 inputField.put("7","aaaaaaaaaa"); // 10位定长

Java_IO流

IO流 1,流的分类 按照流的流向划分: 输入流:只能从中读取数据,而不能向其写数据。输入流基类,InputStream和Reader。 输出流:只能向其写入数据,而不能从中读取数据。输出流基类,OutputStream和Writer。 按照操作数据单元划分: 字节流:操作最小数据单元是8位的字节。字节流基类,InputStream和OutputStream。 字符流:操作最小数据单元是16位字节。字符流基类,Reader和Writer。 2,Java IO体系 2.1 IO体系图

2.2 IO体系分类图 3,IO流抽象基类 3.1,输入流的抽象基类:InputStream和Reader InputStream和Reader是所有输入流的基类,它们都是抽象类,本身不能创建实例来执行输入,但它们是所有输入流的模板,所有输入流都使用它们提供的方法。 在InputStream里包含如下三个方法: 》》int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转换为int类型)。 》》int read(byte[] b):从输入流中读取最多b.length个字节的数据,并将其存储在字节数组b 中,赶回实际读取的字节数。 》》int read(byte[] b,int off,int len):从输入流中读取最多len字节的数据,并将其从off位置开始存储在数组b中,返回实际读取的字节数。 在Reader里包含如下三个方法: 》》int read():从输入流中读取单个字符,返回所读取的字符数据(字符数据可直接转换为int类型)。 》》int read(char[] cbuf):从输入流中读取最多cbuf.length个字符的数据,并将其存储在字符数组cbuf中,赶回实际读取的字符数。 》》int read(char[] cbuf,int off,int len):从输入流中读取最多len字符的数据,并将其从off位置开始存储在数组cbuf中,返回实际读取的字符数。 3.2,输出流的抽象基类:OutputStream和Writer OutputStream和Writer和前面的输入流相似,两个流都提供了如下三个方法: 》》void write(int c):将指定的字节/字符输出到输出流中,其中c代表字节或者字符。 》》void write(byte[]/char[] buf):将字节数组/字符数组中的数据输出到指定的输出流中。》》void write(byte[]/char[] buf,int off,int len):将字节数组/字符数组中从off位置开始,长度为len的字节/字符输出到指定的输出流中。 因为字符流直接以字符作为操作单位,所以Writer可以用字符串来代替字符数组,即以String对象作为参数。Writer里还包含如下两个方法: 》》void write(String str):将字符串str里包含的字符输出到指定的输出流中。 》》void write(String str,int off,int len):将字符串str从off位置开始,长度为len的字符输出到指定输出流中。 4,IO流程序异常处理的标准方式 import java.io.*;

IO流面试题(JAVA)

IO流(Java)面试题 一:IO流整体说明? 用的是装饰模式,装饰模式有四个角色,分别是通用接口、本原、抽象装饰、具体装饰,因为是将本原聚合到了装饰中,所以可以将本原或装饰通过构造子注入到另一个装饰,多个装饰可以随意的组合,形成一个综合的功能对象。 io流分为输入流及输出流,输入流是文件到内存,输出流是内存到文件。 流分为低层流及高层流,在实例化高层流时必须通过构造子将低层流注入到高层流中。 输入流通用的方法是read(),read(char[]),read(byte[]),readline。 输出流的通用方法是write(int),write(byte[]),write[char[]],print("string")。 当读取一个文件时,对于以字节/字节数组,字符/字符数组读取的结束条件是!=-1,对于以字符串读取的结束条件是!=null。 对于有缓存的输出时,要想写入到文件必须flush或close。 二:输入字节流的体系结构? 输入字节流的体系结构: InputStream FileInputStream FilterInputStream ObjectInputStream DataInputStream BufferedInputStream 实现代码: --读一个字节 int temp=fis.read(); while(temp!=-1) { System.out.print(temp); temp=fis.read(); } --读一批字节 byte[] bytes=new byte[1000]; int result=fis.read(bytes); while(result!=-1) { String temp=new String(bytes,0,result); result=fis.read(bytes); } 三:输出的字节流体系结构? 输出的字节流的体系结构: OutputStream FileOutputStream FilterOutputStreame ObjectOutputStream BufferedOutputStream DataOutputStream PrintStream 实现代码:

javaio流学习总结

javaio流学习总结 javaio流学习总结 总结一:javaio流学习总结 一、IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流 二、IO流的四大抽象类: 字符流:Reader Writer 字节流:InputStream(读数据) OutputStream(写数据) 三、InputStream的基本方法 int read() thros IOExeption 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾 void lose() thros IOExeption 关闭流释放内存资源 long skip(long n) thros IOExeption 跳过n个字节不读 四、OutputStream的基本方法 void rite(int b) thros IOExeption 向输出流写入一个字节数据 void flush() thros IOExeption 将输出流中缓冲的数据全部写出到目的地 五、Writer的基本方法

void rite(int ) thros IOExeption 向输出流写入一个字符数据 void rite(String str) thros IOExeption将一个字符串中的字符写入到输出流 void rite(String str,int offset,int length) 将一个字符串从offset开始的length个字符写入到输出流 void flush() thros IOExeption 将输出流中缓冲的数据全部写出到目的地 六、Reader的基本方法 int read() thros IOExeption 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾 七、节点流类型 八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节 九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符 ----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入 ----此类流会抛出FileNotFoundExeption需要对其进行显示捕捉 十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。 此处理流的构造方法都得传相对应的基类类型 BufferedReader:提供了readLine方法用于高校读取一行字符串

对java中的输入/输出的总结(字节流,字符流)

1,先是关于字节流 import java.io.*; public class SimpleIO { /** System 类包含一些有用的类字段和方法。它不能被实例化。 字段摘要 static PrintStream err “标准”错误输出流。 static InputStream in “标准”输入流。 static PrintStream out “标准”输出流。 字段不是一个类,它是一个类的static属性 out是System类的一个属性,而它的类型是PrintStream PrintStream是一个类,它有个方法是println(). */ public static void main(String[] args) { // TODO Auto-generated method stub char c; System.out.println("请输入一个字符:"); try { c=(char)System.in.read(); System.out.println("你输入的字符是:"+c); } catch(IOException e) { System.out.println("产生异常"); } } } 2,关于字符流的考虑。 import java.io.*; public class SimpleIOs { /**

https://www.360docs.net/doc/cf5128435.html,ng.Object 继承者 java.io.Reader 继承者 java.io.InputStreamReader 构造方法摘要 InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。 InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。 https://www.360docs.net/doc/cf5128435.html,ng.Object 继承者 java.io.Reader 继承者 java.io.BufferedReader 构造方法摘要 BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。 BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。 readLine()为BufferedReader扣的方法, public String readLine() throws IOException 读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (' ')、回车 (' ') 或回车后直接跟着换行。 返回: 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 抛出: IOException - 如果发生 I/O 错误 InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集。

Java IO流分析整理

Java中的流,可以从不同的角度进行分类。 按照数据流的方向不同可以分为:输入流和输出流。 按照处理数据单位不同可以分为:字节流和字符流。 按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流: 因此输入和输出都是从程序的角度来说的。 字节流:一次读入或读出是8位二进制。 字符流:一次读入或读出是16位二进制。 字节流和字符流的原理是相同的,只不过处理的单位不同而已。后缀是Stream是字节流,而后缀是Reader,Writer是字符流。

节点流:直接与数据源相连,读入或读出。 直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。处理流:与节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。 Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。 以下是java中io中常用的流。

字节输入流: 字节输出流:

字符输入流: 字符输出流: 简单介绍其上图: 对文件进行操作:FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字符输出流)

对管道进行操作:PipedInputStream(字节输入流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedWriter(字符输出流)PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。 字节/字符数组:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter是在内存中开辟了一个字节或字符数组。 Buffered缓冲流::BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。 转化流:InputStreamReader/OutputStreamWriter,把字节转化成字符。数据流:DataInputStream,DataOutputStream。 因为平时若是我们输出一个8个字节的long类型或4个字节的float类型,那怎么办呢?可以一个字节一个字节输出,也可以把转换成字符串输出,但是这样转换费时间,若是直接输出该多好啊,因此这个数据流就解决了我们输出数据类型的困难。数据流可以直接输出float类型或long类型,提高了数据读写的效率。 打印流:printStream,printWriter,一般是打印到控制台,可以进行控制打印的地方。

JAVA流大全详细介绍

JAVA流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图: java.io包是一组流类,分为: 字节流:抽象父类是InputStream和OutputStream 字符流:抽象父类是Reader和Writer 1、InputStream FileInputStream 类:从实际磁盘文件读取数据 ByteArrayInputStream 类:在字节数组中执行读写操作StringBufferInputStream 类:类似于ByteArrayInputStream,将字符串用作内部缓冲器 2、OutputStream 定义用于写入字节或字节数组的方法。 OutputStream类的体系结构 FileOutputStream类:创建文件(如果文件不存在),并将数据写入文件ByteArrayOutputStream类:在内存中创建缓冲器,toByteArray( )和toString( )方法用于数据检索 FilterOutputStream类:高层输出流 File 类:提供定位本地文件系统、描述文件和目录的功能,是java.io 包中引用实际磁盘文件的唯一对象。

流类可以分为: 底层流:包含以字节的形式读写的方法 高层过滤器流:用于读写高层信息 高层流要求底层流作为基础。 FilterInputStream 类的子类包括: DataInputStream类:提供读取任意对象的能力 DataOutputStream类:提供写入任意对象的能力 BufferedInputStream类:允许程序一次一个字节地从流读取数据BufferedOutputStream类:允许程序一次一个字节地向流写入数据PrintStream类:用于写入文本或基本类型 3、Reader 读取字符类型。 Reader类的体系结构 FileReader:使读取字符文件成为可能 StringReader:读取字符串的字符 CharArrayReader:允许将字符数组用作输入InputStreamReader:从输入流读取字节,并将它们转换成字符FilterReader:允许读取过滤字符流 BufferedReader:接受Reader 对象为参数,并对其添加字符缓冲器4、Writer 写入字符类型。 Writer类的体系结构 FileWriter:允许将字符类型数据写入文件 CharArrayWriter:允许将字符缓冲器用作输出流

(完整版)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教程:PrintWriter-字符打印流

PrintWriter:字符打印流 构造函数参数: 1. 字符串路径 2. File对象 3. 字节输出流 4. 字符输出流 示例2: 1.import java.io.BufferedReader; 2.import java.io.InputStreamReader; 3.import java.io.PrintWriter; 4.import java.io.IOException; 5. 6.public class PrintWriterDemo{ 7. public static void main(String[] args) throws IOException { 8. BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); 9. PrintWriter out = new PrintWriter(System.out); 10. 11. String line = null; 12. while((line = bufr.readLine()) != null){ 13. if("over" .equals(line)) 14. break; 15. out.println(line.toUpperCase()); 16. out.flush(); 17. } 18. 19. out.close(); 20. bufr.close();

21. } 22.} 23. 运行结果: 示例3: 1.import java.io.BufferedReader; 2.import java.io.FileWriter; 3.import java.io.InputStreamReader; 4.import java.io.PrintWriter; 5.import java.io.IOException; 6. 7.//写入到out.txt文件中 8.public class PrintWriterDemo{ 9. public static void main(String[] args) throws IOException { 10. BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); 11. //PrintWriter构造函数的第二个参数设置为true,表示自动刷新 12. PrintWriter out = new PrintWriter(new FileWriter("out.txt" ),true); 13. 14. String line = null; 15. while((line = bufr.readLine()) != null){ 16. if("over" .equals(line))

Java 字节流、字符流题目

实验七 Java的输入和输出(一) 一、实验目的 (1)通过编程和上机实验理解数据流的概念; (2)理解并掌握流的层次结构; (3)理解并掌握Java语言的字符流类和字节流类的使用; 二、实验要求 1. 分析字节流的使用方法; 2. 利用字符流进行编写程序; 三、实验作业 练习0:实现dir功能 练习一:字节输出流写出字节数据 描述:利用字节输出流一次写一个字节的方式,向D盘的a.txt文件输出字符‘a’。 练习二:字节输出流写出字节数组数据 描述:利用字节输出流一次写一个字节数组的方式向D盘的b.txt文件输出内容:"i love java"。 练习三:文件的续写和换行输出 描述:在D盘下,有一c.txt 文件中内容为:HelloWorld 在c.txt文件原内容基础上,添加五句 I love java,而且要实现一句一行操作(注:原文不可覆盖)。 利用字节输出流对象往C盘下c.txt文件输出5句:”i love java” 练习四:字节输入流一次读取一个字节数据 描述:利用字节输入流读取D盘文件a.txt的内容,文件内容确定都为纯ASCII字符,使用循环读取,一次读取一个字节,直到读取到文件末尾。将读取的字节输出到控制台 练习五:字节输入流一次读取一个字节数组数据 描述:利用字节输入流读取D盘文件b.txt的内容,文件内容确定都为纯ASCII字符,使用循环读取,一次读取一个字节数组,直到读取到文件末尾,将读取到的字节数组转换成字符串输出到控制台。 练习六:字节流复制文件 描述:利用字节流将E盘下的a.png图片复制到D盘下(文件名保存一致) 要求: 一次读写一个字节的方式 练习七:字符输出流写出字符数据 项目需求:请用户从控制台输入信息,程序将信息存储到文件Info.txt中。可以输入多条信息,每条信息存储一行。当用户输入:”886”时,程序结束。 扩展题 练习一:字节输入流使用 描述:

JAVA IO流

Java流操作有关的类或接口: Java流类图结构:

流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

IO流的分类 ?根据处理数据类型的不同分为:字符流和字节流 ?根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字节流和字符流的区别: ?读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 ?处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 结论:只要是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。 输入流和输出流 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。 Java IO流对象 1.输入字节流InputStream IO 中输入字节流的继承图可见上图,可以看出: 1. InputStream 是所有的输入字节流的父类,它是一个抽象类。 2. ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流, 它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据,与Piped 相关的知识后续单独介绍。 3. ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。 2.输出字节流OutputStream IO 中输出字节流的继承图可见上图,可以看出: 1. OutputStream 是所有的输出字节流的父类,它是一个抽象类。 2. ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、 和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据, 3. ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。 3.字节流的输入与输出的对应

公司内部Javaio流笔试题

IO 框架 Key Point * File 类 * 流的分类 * 基本字节流 * 字节过滤流 * 基本字符流、桥转换 * 字符过滤流 * 对象序列化 练习 1. (File 类)以下关于File 类说法正确的是: A.一个File 对象代表了操作系统中的一个文件或者文件夹 B.可以使用File 对象创建和删除一个文件 C.可以使用File 对象创建和删除一个文件夹 D.当一个File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除2. (File 类)有如下代码: public class TestFile{ public static void main(String args[]){ File file = new File(“chp13/corejava.txt”); } } 请选择一个正确答案: A. corejava.txt 文件在系统中被创建 B. 在windows 系统上运行出错,因为路径分隔符不正确 C. corejava.txt 文件在系统中没有被创建

D. 如果corejava.txt 文件已存在,则抛出一个异常 3. (File 类)将下列代码补充完整 class TestMyFile{ public static void main(String args[]) throws Exception{ File file; //创建一个File 对象表示当前目录下的“hello.txt”文件 //判断该文件是否存在 //如果该文件存在,则输出该文件的完整路径 } } 4. (流的分类)对于FileInputStream 来说,从方向上来分,它是_________流,从数据单 位上分,它是__________流,从功能上分,它是____________流。 5. (字节流, FileInputStream)FileInputStream 有三个重载的read 方法,其中 1) 无参的read 方法返回值为___类型,表示_________________ 2) int read(byte[] bs)方法返回值表示______________,参数表示 ________________ 3) int read(byte[] bs, int offset, int len) 方法返回值表示_______________,参数分别表示 ___________________________。 6. (FileInputStream)下面关于FileInputStream 类型说法正确的是: A.创建FileInputStream 对象是为了读取硬盘上的文件 B.创建FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常 C.利用FileInputStream 对象可以创建文件 D. FileInputStream 对象读取文件时,只能读取文本文件。 7. (FileOutputStream)填空:

2019年JavaIO流学习总结报告

2019年JavaIO流学习总结报告 一、什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能 被连续写入数据的接收端就是流,流机制是Java及C++中的一个重 要机制,通过流我们可以自由地控制文件、内存、IO设备等数据的 流向。而IO流就是用于处理设备上的数据,如:硬盘、内存、键盘 录入等。IO流根据处理类型的不同可分为字节流和字符流,根据流 向的不同可分为输入流和输出流。 二、字节流和字符流的区别: 字符流,因为文件编码的不同,就有了对字符进行高效操作的 字符流对象,它的原理就是基于字节流读取字节时去查了指定的码表。它和字节流的区别有两点:1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在UTF-8码表中是3个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如jpg、avi、mp3、wav等等,而字符流只能处理字符数据。 所以可以根据处理的文件不同考虑使用字节流还是字符流,如果是纯文本数据可以优先考虑字符流,否则使用字节流。

三、IO体系,所具备的基本功能就是读和写: 1.字符流 |--Reader(读) |--Writer(写) Reader |--InputStreamReader |--FileReader:用于处理文件的字符读取流对象 Writer |--OutputStreamWriter |--FileWriter:用于处理文件的字符写入流对象 其实很容易就可以看出来,IO体系中的子类名后缀绝大部分是父类名称,而前缀则是体现子类特有功能的名称。

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/cf5128435.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()); } } }

JAVA,IO流学习总结

篇一:java之io流学习总结 java之io流学习总结一、什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是java及c++中的一个重要机制,通过流我们可以自由地控制文件、内存、io 设备等数据的流向。而io流就是用于处理设备上的数据,如:硬盘、内存、键盘录入等。io 流根据处理类型的不同可分为字节流和字符流,根据流向的不同可分为输入流和输出流。二、字节流和字符流的区别:字符流,因为文件编码的不同,就有了对字符进行高效操作的字符流对象,它的原理就是基于字节流读取字节时去查了指定的码表。它和字节流的区别有两点:1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在utf-8码表中是3个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如jpg、avi、mp3、wav等等,而字符流只能处理字符数据。所以可以根据处理的文件不同考虑使用字节流还是字符流,如果是纯文本数据可以优先考虑字符流,否则使用字节流。 三、io体系,所具备的基本功能就是读和写: 1.字符流 |-- reader(读) |-- writer(写) reader |--inputstreamreader |--filereader:用于处理文件的字符读取流对象 writer |--outputstreamwriter |--filewriter:用于处理文件的字符写入流对象 其实很容易就可以看出来,io体系中的子类名后缀绝大部分是父类名称,而前缀则是体现子类特有功能的名称。 reader中常见的方法: |--int read() 读取一个字符,并返回读到的这个字符,读到流的末尾则返回-1。 |--int read(char[]) 将读到的字符存入指定的数组中,返回的是读到的字符个数,读到流的末尾则返回-1。|--close() 读取字符其实用的是window系统的功能,就希望使用完毕后,进行资源的释放。 filereader 除了自己的构造函数外没有特有的方法: |--用于读取文本文件的流对象。 |--用于关联文本文件。在读取流对象初始化时,必须要指定一个被读取的文件, 如果该文件不存在则会发生filenotfoundexception异常。 writer中常见的方法: |--write() 将一个字符写入到流中。 |--write(char[]) 将一个字符数组写入到流中。 |--writer(string) 将一个字符写入到流中。 |--flush()

相关主题
相关文档
最新文档