字符流和标准输入输出流

合集下载

《Java基础入门》_课后习题答案大一计算机专业7

《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 流的概念。

字符流分类详细介绍和各种字符流类介绍与使用字符集

字符流分类详细介绍和各种字符流类介绍与使用字符集

字符流分类详细介绍和各种字符流类介绍与使⽤字符集1、字符流:字节流不能操作Unicode字符,由于Java采⽤16位的Unicode字符,即⼀个字符占16位,所以要使⽤基于字符的输⼊输出操作。

所以创造了字符流,以提供直接的字符输⼊输出的⽀持。

2、字符流类的层次结构:2.1、输⼊流的类层次结构:2.2、输出流的类层次结构3、字符流的顶层抽象类:Reader和Writer。

public abstract class Reader extends Object implements Readable, Closeable⽤于读取字符流的抽象类。

⼦类必须实现的⽅法只有 read(char[], int, int) 和 close()。

但是,多数⼦类将重写此处定义的⼀些⽅法,以提供更⾼的效率和/或其他功能。

public abstract class Writer extends Object implements Appendable, Closeable, Flushable写⼊字符流的抽象类。

⼦类必须实现的⽅法仅有 write(char[], int, int)、flush() 和 close()。

但是,多数⼦类将重写此处定义的⼀些⽅法,以提供更⾼的效率和/或其他功能。

4、java.io包中⽤于处理字符流的基本类InputStreamReader和OutputStreamWriter:InputStreamReader是字节流通向字符流的桥梁:它使⽤指定的 charset 读取字节并将其解码为字符。

它使⽤的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

OutputStreamWriter 是字符流通向字节流的桥梁:可使⽤指定的 charset 将要写⼊流中的字符编码成字节。

它使⽤的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。

4.1、InputStreamReader主要构造⽅法:InputStreamReader(InputStream in) 创建⼀个使⽤默认字符集的 InputStreamReader。

输入输出流

输入输出流

输入输出流的相关简介系别:计算机技术与信息管理系班级:09软件技术姓名:徐燕学号:09207745目录一.Java输入输出流详解 (3)1.什么是流: (3)2、流的分类 (3)2.1字节流 (3)2.2.字符流 (4)2.3.对象流 (4)4.字节流与字符流的区别: (4)二.流的层次结构 (5)1.InputStream类 (6)2.OutputStream类 (7)3.FileInputStream类 (7)4.FileOutputStream类 (8)5.File类 (8)6.从一个流构造另一个流 (9)7.BufferInputStream和bufferOutputStream (10)8.printstream (11)三.字符流的读取和写入 (11)1.BufferInputStream和bufferOutputStream (14)2.printstream (15)四.java的i/o输入输出类怎么分出是输入流还是输出流? (15)五.java中什么时候用输入流,什么时候用输出流? (16)六.JA V A输出输入流函数注意事项 (16)1. 处理概述: (17)2. 字节流: (17)2.1输入流: (17)2.2输出流: (18)3、字符流: (18)3.1. 字符流处理概述 (18)3.2. 字符流处理 (19)3.3流处理中的其它方法: (20)七.总结 (21)一.Java输入输出流详解stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。

在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型:1.什么是流:流是一个抽象的概念。

当Java程序需要从数据源读取数据时,会开启一个到数据源的流。

数据源可以是文件,内存或者网络等。

同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。

毕向东Java基础[07-IO]

毕向东Java基础[07-IO]

—高级软件人才实作培训专家! IO包中的其他类

操作基本数据类型
• DataInputStream与DataOutputStream • ByteArrayInputStream与ByteArrayOutputStream • CharArrayReader与CharArrayWrite


操作字节数组
• 当某一功能要重复使用时。
练习: 思考:
• 列出一个文件夹下所有的子文件夹以及子文件
• 1,删除一个目录的过程是如何进行的?
北京传智播客教育
—高级软件人才实作培训专家! IO包中的其他类

打印流

• 可以直接操作输入流和文件。 序列流 • 对多个流进行合并。 操作对象
—高级软件人才实作培训专家! 字符流——创建文件

创建流对象,建立数据存放文件
• • •
FileWriter fw = new FileWriter(“Test.txt”); fw.write(“text”);

调用流对象的写入方法,将数据写入流 关闭流资源,并将流中的数据清空到文件中。
fw.close(); 不写close方法会有什么结果呢? 如果想在原有文件上继续加入新的数据呢?

缓冲区的出现提高了对数据的读写效率。 对应类
• BufferedWriter • BufferedReader


缓冲区要结合流才可以使用。 在流的基础上对流的功能进行了增强。
北京传智播客教育
—高级软件人才实作培训专家! 装饰设计模式
对原有类进行了功能的改变,增强。 装饰模式的基本格式。 它与继承有什么不同? 了解BufferedReader的原理。 练习:

IO操作手册

IO操作手册

IO操作手册1 IO API1.1 类文件输入流:FileReader BufferedReader字符流:输出流:FileWriter BufferedWriter PrintWriter输出流:FileOutputStream BufferedOutputStream PrintStream 字节流:DataOutputStream输入流:FileInputStream BufferedInputStream DataInputStream输入流:InputStreamReader字符字节通用流:输出流:OutputStreamWriter在数据流操作过程中通过缓冲区能大大提高I/O性能,采用数据缓冲区只需将输入与输出流用Buffered*封装一次即可1.2 类说明FileOutputStream 用于写入诸如图像、文件数据之类的原始字节的流FileInputStream 用于读取诸如图像、文件数据之类的原始字节流DataOutputStream写入java基本类型数据字节流(也可写入文件数据)readUTF方法用于读取用UTF-8 修改版格式编码的字节流DataInputStream 读写由DataOutputStream写入的java的基本类型的方法,如readInt,readLong。

writeUTF方法采用平台无关方式的UTF-8 修改版编码写入字节流Buffered*能够在内存里建立一个缓冲数据区,当写文件的时候,能起到缓冲的作用,并且可以自定缓冲区大小,BufferedOutputStream(OutputStream out, int size) InputStreamReader 是从字节流到字符流的桥梁:它读入字节,并根据指定字符编码方式,将之转换为字符流显示。

使用的编码方式可能由名称指定,如InputStreamReader(InputStream in, String charsetName),charsetName就是用于指定字符编码方式的OutputStreamWriter 是字符流通向字节流的桥梁:使用指定的编码方式将要向其写入的字符编码为字节。

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准I/O设备文件和流C程序中经常有大量对文件的输入输出操作,它构成了程序的重要部分,因而C语言提供了很多输入输出的函数,用于两种类型文件输入输出系统:即由ANSI标准定义的缓冲文件系统(也称标准文件(流)输入输出(I/O)系统);另一类是ANSI标准中没有定义的非缓冲文件系统(也称非标准文件(流)输入输出(I/O)系统)。

我们已经熟悉了通过键盘和显示器进行输入输出的一些函数,如scanf,printf 等等,这些通过控制台(键盘、显示器等)进行I/O的操作,可以看作标准文件输入输出系统的一些特例。

任何C程序执行时,系统都定义了5个标准设备文件供使用。

系统自动打开的5个标准设备文件为:键盘(标准输入)stdin 0显示器(标准输出)stdout 1显示器(标准错误)stderr 2串行口(标准辅助)stdoux 3打印机(标准打印)stdprn 4在C中可将数据的输入输出看作是数据的流入和流出,这样不管是普通(磁盘)文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。

这种把数据的输入输出操作,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输入输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。

在C语言中流可分为两大类,即文本流(text stream)和二进制流(binary stream)。

所谓文本流是指在流中流动的数据是以字符形式出现。

在文本流中,'\n'被换成回车CR和换行LF的代码0DH和0AH。

而当输出时,则0DH和0AH被换成'\n'。

二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。

在流入流出时,对\n符号不进行变换。

【示例】2001这个数,在文本流中用其ASCII码表示为:50 48 48 49共占4字节。

第九章输入输出处理

第九章输入输出处理
对于这三个方法,若返回-1,表明流结束。
9
2. 字节流——OutputStream
write(int b)
将一个整数输出到流中(只输出低位字节,抽象)
write(byte b[])
将字节数组中的数据输出到流中
write(byte b[], int off, int len)
将数组b中从off指定的位置开始,长度为len的数据 输出到流中
本讲内容
1、I/O概述 2、I/O字节流 3、I/O字符流 4、随机访问文件
1
1. I/O概述
大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写 数据、在一个网络连接上进行读写操作等。 在Java中,把这些不同类型的输入、输出抽象为流 (Stream),而其中输入或输出的数据则称为数据流 (Data Stream),用统一的接口来表示,从而使程序 设计简单明了。
ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStream
OutputStream
ByteArrayOutputStream FileOutputStream FilterOutputStream
FilterInputStream(InputStream in); FilterOutputStream(OutputStream out);
这两个类是抽象类,构造方法也是保护方法。
15
2. 字节流——过滤流:缓冲流
类BufferedInputStream和BufferedOutputStream实现 了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O 流“捆绑”到缓冲流上,可以提高读写效率。 在初始化时,除了要指定所连接的I/O流之外,还可以 指定缓冲区的大小。缺省大小的缓冲区适合于通常的 情形;最优的缓冲区大小常依赖于主机操作系统、可 使用的内存空间以及机器的配置等;一般缓冲区的大 小为内存页或磁盘块等地整数倍,如8912字节或更小。

输入输出流-2.输入输出流、文件流

输入输出流-2.输入输出流、文件流
18
4.5
文件输入输出流
FileInputStream 用来打开一个输入文件,可以从文件读取一个或几个字节。 若文件不存在,则会产生例外FileNotFoundException,这是一个 非运行时例外,必须捕获或声明抛弃; FileOutputStream 用来打开一个输出文件,可以将一个或几个字节写入文件。 若文件不存在,则创建一个新的文件,否则原文件被覆盖。 FileReader
4
本节学习目标
熟悉字节文件流和字符文件流 熟悉输入输出流的常用方法 掌握字节文件输入输出流的使用 掌握字符文件输入输出流的使用
5
文件输入输出流
任务1:通讯录以文本形式存储,读取文件内容,并输出显示(在读取 时一次读取一个字节或一个字符) 成果体验
任务步骤: 创建文件输入流对象 读取文件中的个人通讯方式 输出显示 检测运行是否成功 任务2:向通讯录中写入新的联系人及联系方式.
15
字节流抽象类的使用
把输入流中的所有内容复制到输出流中
public void copy(InputStream in, OutputStream out) throws IOException { byte[] buf = new byte[4096]; int len = in.read(buf); while (len != -1) { out.write(buf, 0, len); 一般2个抽象类使用在形参中, 一般2个抽象类使用在形参中, len = in.read(buf); 可以接受任何其子类对象 } }
注意:new File()只是生成文件对象,不是生成真正的文件,生成文 件用creatNewFile(),生成文件目录mkdir()或者mkdirs() 文件是有扩展名,用creatNewFile() 目录无扩展名,用mkdir()或者mkdirs() 。表示当前目录
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


– –
System.in :用于程序的输入;
System.out:用于一般输出;
对应外设为键盘
对应外设为屏幕
System.err:用于显示出错信息; 对应外设为屏幕

System 类的所有属性都是静态static的,调用时以类名System为前缀。
上述3个流对象均为静态属性。
基本I/O之例
//从键盘输入字符,然后在屏幕上显示输入结果
字符输出流:Writer
• Writer是一个字符流,它是一个抽象类,所 以要使用它,也必须通过其子类来实例化 它后才能使用它。 • Writer类的常用方法----查看API文档
• 示例1:HelloWorld-----(按步骤完成) • 向一个文本文件中通过字符输出流写入数据 • public static void main(String[] args) throws Exception { • File file = new File("hellowolrd.txt"); // 声明一个File对象 • Writer writer = null; // 声明一个Write对象 • writer = new FileWriter(file, true); // 通过FileWriter类来实例化 Writer类的对象并以追加的形式写入 • • String str = "字符串形式写入Helloworld"; // 声明一个要写入的字符串 • writer.write(str); // 写入文本文件中 • writer.flush(); // 刷新 • writer.close(); // 关闭字符输出流 • }
import java.io.*;
public class standardIO{ public static void main(String[] args) throws IOException { //IO操作必须捕获IO异常 char c; System.out.println("输入任一字符 "); c=(char)System.in.read();
用字节流写文件
FileOutputStream fout=null; try { fout = new FileOutputStream("e:\\t.txt"); fout.write('c'); fout.write("大家好".getBytes()); fout.flush(); }catch (FileNotFoundException ex) { ex.printStackTrace(); }catch (IOException ex) { ex.printStackTrace(); }finally{ try { fout.close(); } catch (IOException ex) { ex.printStackTrace(); } }
– (3)若需要对字节或字符流信息组织加工为数据,在已建字节流或字 符流对象上构建数据流对象。
– (4)用输入输出流对象类的成员方法进行读写操作。 – (5)关闭流对象。
字符流(Reader类和Writer类)
• 在程序中一个字符r两个专门操作字符 流的类。
System.out.println("输入的字符是 :"+c);
} }
• 如果你要保存的是一张图片或一首mp3,那么用
字节流比较合适,如果你要保存的是一段文字,
那么用字符流更合适。
用字节流读文件
FileInputStream fin=null; try { fin=new FileInputStream("e:\\t.txt"); //建立文件输入流 System.out.println(fin.available());//此方法何用?自己查文档 int i=fin.read(); while(i!=-1){ System.out.print((char)i); i=fin.read(); } } catch (IOException ex) { ex.printStackTrace(); }finally{ try { fin.close(); //关闭流 } catch (IOException ex) { ex.printStackTrace(); } }
Java输入输出处理——流
字符流、标准输入输出流
学习目标
• 理解流的概念和作用 • 理解字节流与字符流的异同 • 掌握常用的输入/输出流类读写文件的使用
输入输出流使用步骤
• 输入输出流操作的一般步骤如下: – (1)使用引入语句引入java.io包:import java.io.*; – (2)根据不同数据源和输入输出任务,建立字节流或字符流对象。
字符流与字节流的区别
• 字节流操作时本身不会用到缓冲区,是文件本身直接操作, 而字节流在操作时就使用到了缓冲区
如果我们在操作字符流的时候,不关闭流,我们写入的数据是无法保存的。 所以在操作字符流的时候一定要记得关闭流
标准输入输出流
• 为了减少程序开发人员,因频繁应用标准的输入输出设备,需要频 繁地建立输入输出流对象的工作量,java系统预先定义好3个流对象, 分别表示标准输出设备、标准输入设备和标准错误设备。他们分别 是:
字符输入流:Reader
• Reader本身也是一个抽象类,同样,如果使 用它,我们需要通过其子类来实例化它才 可以使用它。 • Reader类的常用方法-----API方法
• • • • • • • • • • • • • • • • •
示例2:还是Helloworld 在上面的基础上把文本中的内容读出来,并且显示在控制台上 public static void main(String[] args) throws Exception { File file = new File("hellowolrd.txt"); // 声明一个File对象 Reader reader = null; // 声明一个Reader类的对象 reader = new FileReader(file); // 通过FileReader子类来实例化Reader 对象 char[] c = new char[1024]; // 声明一个字符数组 // // 将内容输出 // int len = reader.read(c); //循环方式一个一个读 int len=0; int temp=0; while((temp=reader.read())!=-1){ c[len]=(char)temp; len++; } reader.close(); // 关闭输入流 System.out.println(new String(c, 0, len)); // 把char数组转换成字符串输出
用字符流写文件
FileWriter fout=null; try { fout = new FileWriter("e:\\t.txt"); fout.write("你好"); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { fout.close(); } catch (IOException ex) { ex.printStackTrace(); } }
用字符流读文件
FileReader fin=null; try { fin = new FileReader("e:\\t.txt"); int c=fin.read(); while(c!=-1){ System.out.print((char)c); c=fin.read(); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex){ ex.printStackTrace(); }finally{ try { fin.close(); } catch (IOException ex) { ex.printStackTrace(); }
相关文档
最新文档