Java程序设计基础 第10章输入输出系统

合集下载

Java面向对象程序设计(第二版)第10章_Java的输入与输出流解读

Java面向对象程序设计(第二版)第10章_Java的输入与输出流解读

目的 地
注意,流是有方向性的,输入流只能从中读取数据,而不能往一个输入流 中写数据。同样的,也不能从一个输出流中读数据。
10.3标准输入/输出流




System类管理标准输入/输出流和错误流。它提供了标 准输入流Syetem.in,标准输出流System.out,以及错误 流System.err。通过System类的基本属性in,可以获得 一个InputStream对象,其语句为: InputStream is=System.in; 它是一个标准输入流,一般接收键盘的响应,得到键盘 所传递来的数据。 System.out 是标准输出流,一般用于向显示设备(一般 是显示器)输出数据。它是Java.io包中PrintStream类的 一个对象,其println()、print()和write()方法用于输出数 据。 和System.out一样,System.err也是一个PrintStream对 象,用于向显示设备输出错误信息。
10.3标准输入/输出流(续)
例10.2从键盘读入若干字符,然后转换为字符串并在显示器上显示出来。 //Jpro10_2.java import java.io.*; public class Jpro10_2 { public static void main(String[] args) { InputStream is = System.in; try { byte[] bs = new byte[512]; int len = is.read(bs); String str=new String(bs); System.out.println("输入的内容:" +str); is.close(); } catch (IOException e){ e.printStackTrace(); } } }

Java程序设计教程第10章 IO输入输出流

Java程序设计教程第10章 IO输入输出流

10.1.5 实例:使用read方法读取文件内容
• 代码见书10-3从磁盘上“C:\ java测试及练习”文件夹下 ,读取“aaa.txt”文件中的内容,并按数组中的位置,来 分别显示每个字符在数组中的信息,包括:位置、对应 ASCII码、字符。
• • • • FileInputStream readfile = new FileInputStream("aaa.txt"); //创建文件输入流,将其指向当前目录下aaa.txt文件 b = readfile.read(buff,0,2500); //使用read()方法读取输入流文件内容,并存储于buff字节数组
代ቤተ መጻሕፍቲ ባይዱ如下
• • • • • • • • • • • • • • • • • • • • • • • • public static void main(String[] args) { int b; byte buffer[]=new byte[2500]; try { File f=new File("C:\\ java测试及练习\\"," InputStreamTest.java"); //创建File对象file,用来获取磁盘中文件 FileInputStream file=new FileInputStream(f); //创建一个文件输入流,用来指向之前的文件对象f b=file.read(buffer,0,2500); //使用read()方法读取文件中的内容,并保存在字节数组buffer中 try { String str=new String(buffer,0,b,"Default"); //创建字符串str,用来转换并存储字节数组中内容 System.out.println(str); //输入字符串str } catch(UnsupportedEncodingException e) {System.out.println("the encoding was not found:"+e);} } catch(IOException e) {System.out.println("File read Error");} }

Java输入输出

Java输入输出

标准流
语言包ng中的System类管理标准输入/输出流和错 误流. System.in,从InputStream中继承而来,用于从标准输入 设备中获取输入数据(通常是键盘). System.out,从PrintStream中继承而来,把输出送到缺 省的显示设备(通常是显示器). System.err,也是从PrintStream中继承而来,把错误信 息送到缺省的显示设备(通常是显示器). 每当main方法被执行时,就自动生成上述三个对象.
文件的最后修改日期,长度;删除文件
f.mkdir(), f.list():创建一个目录;列出目录下所有的文件
Demo:创建文件对象
import java.io.*; public class examFile1{ public static void main(String args[]){ File dirObject = new File("e:\\mydir"); File fileObject1 = new File("onefirst.txt"); File fileObject2 = new File("e:\\mydir","firstFile.txt"); System.out.println(fileObject2); try { dirObject.mkdir(); }catch(SecurityException e){ } try { fileObject2.createNewFile(); fileObject1.createNewFile(); } catch(IOException e){ } } }
RandomAccessFile:提供对本地文件系统中文件的随机 访问支持.

Java简明教程第2版 第10章 Java输入输出流

Java简明教程第2版 第10章 Java输入输出流

Java简明教程(第二版)
第10章 Java输入/输出流
第5页
主要内容
10.1 引言 10.2 流的概念 10.3 文件 10.4 字节流 10.5 字符流 10.6 本章小结 10.7 思考和练习
Java简明教程(第二版)
第10章 Java输入/输出流
第6页
10.2 流的概念
Java用流的概念来描述输入输出。Java提供的输
Java简明教程(第二版)
第10章 Java输入/输出流
第15页
扩充的标准输入
Java采用双字节存储字符,是为了将字符与汉字 统一起来,方便处理。字符流即指双字节流。标 准输入提供的read()方法显然不够方便,因为它 是以单个字节或字节数组的方式来获取输入的, 而通常需要用户输入的数据却是其他类型的,如 字符串、int、double等。怎么办呢?Java采用 了一种称为Decorator(包装)的设计模式来对标准 输入进行了功能扩充,具体什么是Decorator设 计模式,这里不做介绍,大家只要知道它是用来 给原对象扩充功能(即再次加工)用的就可以了。
第10章 Java输入/输出流
本章概述 本章的学习目标 主要内容
Java简明教程(第二版)
第10章 Java输入/输出流
第1页
本章概述
输入和输出是人机交互的重要手段,Java 提供了基于流的基本I/O(输入/输出)系统。 Java在java.io包中定义了定义了实现各种 功能的I/O流类。本章将研究java.io包提供 的对I/O操作的支持。包括字节流和字符流 、文件的读写、处理I/O异常等内容。通过
//设置
Java简明教程(第二版)
第10章 Java输入/输出流
第21页

java中的输入流与输出流

java中的输入流与输出流

3 标准错误
运行或编译Java程序时,各种错误 信息输出到标准错误设备,即显示器。 在Java中,标准错误设备用System.err表 示 。 System.err 属 于 PrintStream 类 对 象 。
10.3 文件操作
在程序中要对磁盘文件或目录进行操作, 首先要对文件或目录建立连接,为此Java提供 了File类。File类也位于java.io包中,但不是流 类,而是专门用来管理磁盘文件和目录。
OutputStream子类的继承关系
Reader类(字符流)
int read( ) long skip( ) void mark( ) void close( ) void reset( )
Reader类的主要方法
Reader BufferedReader InputStreamReader FileReader
1 建立File对象(三)
File(File dir, String name) 此构造方法中的参数dir表示一个磁盘目录对应 的File对象,参数name表示文件名或目录名。
例如,为文件c:\java\oldfile.txt建立File对象file 可以采用以下语句: File dir1=new File(“c:\\java\\oldfile.txt”) File file1=new(dir1,”oldfile.txt”)
注:使用文件输入流读取文件要处理I/O异常,也可以抛 出异常throw IOException
Java实例—以字节流方式写入文件
import java.io.*; public class File2{ public static void main(String[] args) throws IOException{ char ch; File file1=new File("c:\\jdk1.3\\example\\newFile.txt"); try{ FileOutputStream fout= new FileOutputStream(file1); System.out.println("输入任一字符串,以?结束"); ch= (char) System.in.read(); while (ch !='?'){

java输入输出PPT课件

java输入输出PPT课件

举例:AppNumInOut.java
DataInOut.java
.
15
桥梁类
桥梁:InputStreamReader类和 OutputStreamWriter类
InputStream InputStreamReader Reader
OutputStream OutputStreamWriter Writer
如果流带有缓冲区,数据不会直接到达通道另一端,会暂 时保存在缓存区当中,当数据超过缓冲区,才会到达通道 另一端。或者使用flush()方法,强迫数据通过流通道。
流的串联是堆栈方式的,显示地调用栈顶流的flush()方法, 程序会依次调用所有串联流的flush()方法。调用close()方 法关闭流,显示地关闭栈顶流即可。对于输出流,close() 方法会自动调用flush()方法。
5}
6}
7}
//运行程序TestCommandLine.java
java TestCommandLine lisa "bily" "Mr Brown"
//输出结果:
args[0] = lisa
args[1] = bily
args[2] = Mr Brown
.
16
Scanner
Jdk 5 Java.util.Scanner 可以直接封装System.in 提供函数直接获得输入数据
.
17
命令行参数(向主函数输入)
Java Application 使用命令行来启动执行,命令行参 数可以向主函数传递参数。
▪ 在启动Java应用程序时可以一次性地向应用程序 中传递0~多个参数----命令行参数
出length-1,会有异常。.

Java输入与输出PPT教案学习

Java输入与输出PPT教案学习

File类
(2)File(String path,String filename) 该构造方法根据指定的父路径字符串和子路 径字符串(包括文件名称)创建File类的实例对象。 语法:
new File(path, filename);
path:父路径字符串。 filename:子路径字符串,不能为空。
第24页/共66页
InputStreamReader类
(1)InputStreamReader(InputStream in) 该构造方法使用默认字符集创建InputStreamReader 类的实例对象。 语法如下:
new InputStreamReader(in);
in:字节流类的实例对象。
第25页/共66页
读取一些字符到char[]数组内,并返回所读入的字符的 数量。若已到达流结尾,则返回-1
将当前输入流重新定位到最后一次调用mark() 方法时 的位置
跳过参数n指定的字符数量,并返回所跳过字符的数量
关闭该流并释放与之关联的所有资源。在关闭该流后, 再调用 read()、ready()、mark()、reset() 或 skip() 将抛出异常
Abasract read()
功能描述 返回当前输入流的数据读取方法可以读取的有效字 节数量 从输入数据流中读取字节并存入数组b中
从输入数据流读取len个字节,并存入数组bytes中
将当前输入流重新定位到最后一次调用mark() 方 法时的位置 在输入数据流中加入标记 测试输入流中是否支持标记 关闭当前输入流,并释放任何与之关联的系统资源 从当前数据流中读取一个字节。若已到达流结尾, 则返回-1
字符输出流
Writer类是字符输出流的抽象类,所有字符输出流的 实现都是它的子类。Java中字符输出流的继承关系如下图所 示。

Java输入输出系统

Java输入输出系统
详细内容见 详细内容见 软件的 OutputStream 类
Page
17 / 44
Lu Qiang, 2011 Hefei University of Technology , School of Computer and Information
Chapter9
Java I/O 系统


| 使用FileInputStream类,从文件中以字节流 方式读取全部信息在命令行打印输出
文件
TestFileInputStream.java TestFileInputStream.java
15 / 44
Lu Qiang, 2011 Hefei University of Technology , School of Computer and Information
Lu Qiang, 2011 Hefei University of Technology , School of Computer and Information
Chapter9
Java I/O 系统
常用软件
Page
4 / 44
Lu Qiang, 2011 Hefei University of Technology , School of Computer and Information
2 / 44
Lu Qiang, 2011 Hefei University of Technology , School of Computer and Information
Chapter9
Java I/O 系统


1 2 3 4 5
Java I/O流概述
字节流
字符流
文件处理

Java语言12第10章 输入、输出流

Java语言12第10章 输入、输出流

• long skip(long n):跳过n个字节,并返回跳 过的字节数 • int available():返回在不发生阻塞的情况下, 可以读取的字节数。 • void close():关闭输入流并释放也这个流 相关的系统资源。 • void mark(int readlimit):在输入流的当前 位置设置标记,如果读取的字节数多于 readlimit则忽略这一标记 • void reset():返回到上一个标记 • boolean markSupported():测试当前流是 否支持标记。
第10章 输入、输出流
java的IO操作
Java语言是一种追求软件系统运行环境 无关性的跨平台语言,为此Java平台将应用 程序间、应用程序与磁盘文件之间的数据传 输抽象为各种类型的流对象,将文件系统中 的文件抽象为File对象。
Java.io包
Java语言中提供了比较完善的处理文件 和输入输出数据的功能,实现这些I/O操作的 类和接口都在java包中。java.io包中提供了各 种各样的输入输出流类,它们都是Object类 的直接子类,每一个流类代表一种特定的输 入或输出流。
• void flush():刷新输出流,强制缓冲区中的 数据写出。 • void close():关闭输出流,关闭与输出流 相关的系统资源。
java.io包中OutputStream类层次
FileOutputStream ByteArrayOutputStream OutputStream FilterOutputStream ObjectOutputStream PipedOutputStream DataOutputStream
10.2 字节流与字符流
流的概念
所谓流是指同一台计算机或网络中不同 计算机之间有序运动着的数据序列,Java把 这些不同来源和目标的数据都统一抽象为数 据流。数据流可分为输入流和输出流,输入 流流代表从其他流入计算机的数据序列,输 出流代表从计算机流向处部设备的数据序列。 流序列中的数据可以是没有进行加工的原始 数据,也可以是经过编码的符合某种格式规 定的数据,Java中提供了不同的流类对象对 它们 进行处理。

JAVA程序设计合集之10输入输出

JAVA程序设计合集之10输入输出

10.1 输入/输出基础

继承自InputStream的流都是用于向程序中输入数据。
FileInputStream DataInputStream ByteArrayInputStream BufferedInputStream FilterInputStream LineNumberInputStream
图中,白色为节点流,其余为处理流
10.1 输入/输出基础
字符流类 字符流类由两个类层次结构定义,抽象类 Reader和Writer为最顶层类,它们处理Unicode 的字符流。其中每个类又有多个具体的子类。 Java中的字符是Unicode编码,是双字节的, Java提供了直接对字符文本进行处理的字符流 类。
返回当前输入流中可读的字节数 在输入流当前读取位置作标记,从该位置开 始读取readlimit个字节数据后,标记失效
void reset()
long skip(long n) void close()
将输入流中读取位置重置到刚调用mark()方 法所标记的位置。
当前读取位置向后跳过n个字节,并返回实 际跳过的字节数 关闭输入流并释放系统资源,关闭后再进行 读取操作会产生IOException异常Βιβλιοθήκη 10.2 字节流类
RandomAccessFile (随机访问文件类) 写数据的方法
writeBoolean() writeInt() writeChar() writeDouble() 按单字节值将 boolean 写入该文件 按四个字节将 int 写入该文件 按双字节值将 char 写入该文件 按八字节数量将该double 值写入 该文件
10.2 字节流类

FileOutputStream(文件输出流) FileOutputStream类创建一个可以向文件中写入字节的 OutputStream类,它有3个构造方法: 方 法 描 述

Java程序设计实用教程_第10章_输入、输出流资料

Java程序设计实用教程_第10章_输入、输出流资料
int read(): int read(char b[]): int read(char b[], int off, int len): void close(): long skip(long numBytes):
2. Writer流以字符为单位顺序地写文件,每次调用write方法 就顺序地向目的地写入内容。 Writer类有如下常用的方法。
2019/4/7 6
例10-1 例10-1
Example10_1.java
page 177
2019/4/7
7
§10.1.2 目录
1.创建目录 public boolean mkdir() 2.列出目录中的文件
public String[] list() 用字符串形式返回目录下的全部文件。 ◆ public File [] listFiles() 用File对象形式返回目录下的全部文件。 ◆ public String[] list(FilenameFilter obj) 用字符串形式返回目录 下的指定类型的所有文件。 ◆ public File [] listFiles(FilenameFilter obj) 用File对象形式返回 目录下的指定类型所有文件。 上述两方法的参数 FilenameFilter是一个接口, 该接口有一个

方法:
public boolean accept(File dir,String name);
例10-2
Example10_2.java , FileAccept.java
2019/4/7
8
§10.1.3 文件的创建与删除 当使用File类创建一个文件对象后,例如
File file=new File("c:\\myletter","letter.txt"); ◆ 如果 c:\myletter 目录中没有名字为 letter.txt 文件 , 文件对 象file调用方法 public boolean createNewFile();可以在 c:\myletter目录中建立一个名字为letter.txt的
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. Byte流
传输8位的数据就应用 Byte流,Java库中用InputStream(输入)和 OutputStream(输出)类族中的类来实现8位数据的传输,这些类主要用来 传输二进制数据,如声音和图像,ObjectInputStream ObjectOutputStreamy用来传输对象序列。
如果不用管道流,这个操作过程必须存储两个中间过程,即经过第一 次reverse()后得到的词表和经过sort()之后的词表。如图所示
Reverse
List of Words
Sort
List of Reversed Words
Reverse
List of Reversed Sorted Words
List of Rhyming Words
3. 关于IO的根类
Reader含有以下读取字符和字符数组的方法:
int read() int read(char cbuf[]) int read(char cbuf[], int offset, int length) 而InputStream定义了读取byte型数据的方法如下: int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length)
而如果用管道流,把一个方法的输出作为另一个方法的输入,就不需 要中间的存储文件了,当然这时必须用多个线程同时运行,即 revers(),sort()和reverse()一起工作,并且把中间的存储文件用
管道流来代替。如图所示。
Reverse
Sort
List of Words
Reverse
List of Rhyming Words
第10章 输入输出系统
学习重点:
?输入输出的总体结构 ?流的概念 ?构建不同的流
第10章 输入输出系统
10.1 输入输出流的概述 10.2 各种流的使用
10.2.1 文件流 10.2.2 管道流 10.2.3 连接文件 10.2.4 过滤流 10.2.5 对象的序列化 10.2.6 随机访问 10.3 练习题
LineNumberReader
FileReader PushbackReader
Writer
Bufferedwriter CharArraywriter OutputStreamReader
FilterWriter PipedWriter StringWriter FilterWriter
FileWriter
Writer方法如下:
int write(int c) int write(char cbuf[]) int write(char cbuf[], int offset, int length) OutputStream方法如下: int write(int c) int write(byte cbuf[]) int write(byte cbuf[], int offset, int length)
例10.1 使用File Reader和File writer的文件复制
这个例子就是把partnovel.txt的内容传输到target.txt中,这两个 文件都在本机的e:\files中。 ? 程序代码
例10.2 使用InputStream和OutputStream的文件复制
? 程序代码
? 两个方法复制同样一段文件内容,每次读取的内容是不一样的, FileReader每次读取的是一个字符(charactor),而屏幕中显示的是这个 字符的编码(0到65 535之间的一个整数)。而FileInputStream每次读取的 是一个字节(byte),而屏幕中显示的是这个字节的编码(0~255之间的一 个整数)。
4. 各种流ห้องสมุดไป่ตู้介
表10.1列出了java.io包中的各种流和它们的功能。注意,这些流都能传输 char和byte,两种不同的数据类型。
? 表10.1
10.2 各种流的使用
10.2.1 文件流
文件流(File streams)是用来传输当前系统下的某个文件中的一些内容 的,它应该是最简单的一种流,它可以是以下几种流类的对象: FileReader,FileWriter,FileInputStream和FileOutputStream。
1. Character流
Character流以Reader(对应输入)和Writer(对应输出)两个类族来实现, 其中Reader和Writer是输入和输出族的根类
Reader
BufferedReader CharArrayReader InputStreamReader
FilterReader PipedReader StringReader
10.1 输入输出流的概述
Java的输入和输出多以流的方式进行的,它的特点是数据的发送 和获取都是延数据序列顺序进行的,每个数据必须等待它前面的数 据发送或读入后才能被读写。
? 当需要读入数据时,程序先从数据的来源(文件、网络等)打开一个流, 然后从这个流中顺序读取数据
? 当要输出数据时,程序打开一个流,通过这个流向输出目标顺序写入数 据
例10.3 对词汇的韵排序
这个例子中一共定义了3个类,主要的流程结构定义在RhymingWords 类
中,它是这个程序的主类,另外,我们还定义了ReverseThread和 SortThread两个线程,它们的工作就是分别执行上图中指出的reverse和 sort的动作,
(1) ReverseThread的作用是执行将单词的字母顺序逆转过来的 动作,源代码如下:
10.2.2 管道流
管道流(Pipe Streams)是把一个线程的输出作为另一个线程的输 入。实现它的是PipedReader、PipedWriter、PipedInputStream和 PipedOutputStream。
管道流(Pipe Streams)的作用
如果定义了一个类,用来实现对一组词的操作,其中的一个操作是按它 们的韵(词尾)排序,方法是先把这些词的字序逆转(reverse()),然后把逆转 后的词排序(sort()),最后再逆转每个词(reverse()),这样就得到这些词的 韵的排序。
相关文档
最新文档