java输入输出类
java输入输出流实验报告总结
java输入输出流实验报告总结Java输入输出流是Java中非常重要的概念,也是Java程序设计的基础。
在Java 程序中,输入输出流用于处理与设备之间的数据传输,例如键盘、鼠标、文件等。
Java的输入输出流主要包含两种类型:字节流和字符流。
字节流以字节为最小读写单位,而字符流以字符为最小读写单位。
Java的输入流有很多种类型,例如:InputStream、ByteArrayInputStream、FileInputStream等。
这些输入流的共同特点是读取外部数据到程序中。
Java的输出流也有多种类型,例如:OutputStream、ByteArrayOutputStream、FileOutputStream等。
这些输出流的共同特点是将程序中的数据输出到外部。
下面将以实验报告的形式进行总结,详细介绍Java输入输出流的原理和使用方法。
实验一:字节流输入输出1. 实验目的:掌握字节流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从文件中读取数据,然后将数据输出到另一个文件中。
3. 实验步骤:a. 创建一个输入流对象,用于读取原始文件的数据。
b. 创建一个输出流对象,用于将读取到的数据输出到目标文件中。
c. 循环读取输入流中的数据,直到读取到文件末尾。
d. 将读取到的数据写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功读取原始文件中的数据,并将数据输出到目标文件中。
实验二:字符流输入输出1. 实验目的:掌握字符流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从键盘输入文字,然后将文字输出到屏幕上。
3. 实验步骤:a. 创建一个字符输入流对象,用于读取键盘输入的文字。
b. 创建一个字符输出流对象,用于将读取到的文字输出到屏幕上。
c. 循环读取输入流中的文字,直到读取到换行符。
d. 将读取到的文字写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功从键盘输入文字,并将文字输出到屏幕上。
java中的输入输出语句
在Java中,你可以使用System.out来进行标准输出,使用System.in来进行标准输入。
以下是一些基本的输入输出语句示例:1. 标准输出(System.out):public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}上述示例中,System.out.println用于将文本输出到控制台。
2. 标准输入(System.in):import java.util.Scanner;public class UserInput {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("Enter your name: ");String name = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();System.out.println("Hello, " + name + "! You are " + age + " years old.");}}上述示例中,Scanner类用于从控制台读取用户的输入。
scanner.nextLine()用于读取一行文本,而scanner.nextInt()用于读取整数。
3. 格式化输出(System.out.printf):public class FormatOutput {public static void main(String[] args) {String name = "John";int age = 25;System.out.printf("Hello, %s! You are %d years old.%n", name, age);}}上述示例中,System.out.printf允许你使用格式字符串输出,并在其中插入变量的值。
java输入输出语句例子
java输入输出语句例子Java语言中的输入输出语句是开发者经常使用的重要命令之一。
在本文中,我们将通过几个例子来展示Java中如何使用输入输出语句。
1. 导入Java中的I/O库在使用Java中的输入输出语句之前,我们需要先导入Java中的I/O库。
通过这个库,我们可以轻松地从键盘读取输入、从文件中读取输入和将输出写入文件。
在Java中,我们通常使用java.io包中的类来处理输入输出任务。
为了导入这个包,我们只需要在Java程序的开头添加以下代码:```import java.io.*```2. 使用Java中的输入输出语句一旦我们导入了Java中的I/O库,我们就可以开始使用Java中的输入输出语句了。
以下是几个例子:- 读取键盘输入并将其打印出来```import java.io.*public class InputOutputExample{public static void main(String args[]) throws IOException{BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));System.out.println("Enter your name: ");String name = inp.readLine();System.out.println("Hi " + name + ", nice to meet you!"); }}```在这个例子中,我们创建了一个BufferedReader对象,并使用它来读取来自键盘的输入。
我们使用System.in作为我们的输入源,并使用InputStreamReader将它们从字节流转换为字符流。
最后,我们使用BufferedReader的readLine()方法来读取用户输入。
《java输入输出》课件
通过格式化字符串将数据输出到控制台。
String.format
将数据格式化字符串并返回格式化结果。
异常处理
1
try -catch语句
通过添加try-catch语句来处理异常。
2
fin ally 语句
无论是否发生异常,finally语句块中的代码都会执行。
3
自定义异常
开发自定义异常来处理特殊情况。
字符输入输出
字符读取
使用Reader类读取字符信息。
字符写入
使用Writer类向文件中写入字符信息,可支持中文。
二进制输入输出
1 输入
使用BufferedInputStream类从二进制文件中读取信息。
2 输出
使用BufferedOutputStream类将信息写入二进制文件中。
格式化输入输出
控制台输出
使用System.out.print来在控制台输出信息。
键盘输入
使用Scanner类从键盘获取用户输入的信息。
文件输入输出
1
文件读取
使用File类和Scanner类从文件中读取信息。
2
文件写入
使用FileWriter类和PrintWriter类信息写入文件中。
3
二进制文件读写
使用InputStream和OutputStream类读写二进制文件。
《java输入输出》PPT课件
本课程将教您如何处理各种输入输出并展示Java编程语言的强大功能。
输入输出概述
输入
从外部读取数据到计算机中,例如键盘输入。
处理
综合输入和输出,对外部数据做出处理。
输出
将数据从计算机输出到外部,例如屏幕输出。
JAva第 6 章 Java的输入输出.ppt
2020/8/16
2020/8/16
Java面向对象程序设计教程
9
输入输出类的分类
文件I/O :FileInputStream 内存缓冲区I/O :BufferedInputStream 存取I/O :DataInputStream 管道I/O :PipedInputStream 过滤器I/O :FilterInputStream
2020/8/16
Java面向对象程序设计教程
10
标准流及其重定向
System.out是标准的输出流,默认情况下, 它是一个控制台。
System.in是标准输入流,默认情况下, 它指的是键盘。
System.err指的是标准错误流,它默认是 控制台。
这些流可以重定向到任何兼容的输入/输出 设备。
6.3 数据持久化
• 6.3.1 对象串行化 • 6.3.2 XML文件的输入输出 • 6.3.3 JDBC入门
6.4 文件类的应用
• 6.4.1 File类 • 6.4.2 File类应用举例
2020/8/16
Java面向对象程序设计教程
2
6.1 流输入/输出类的层次结构
流的概念
流(Stream)是有序的数据序列,它有源(输入流)与 目的(输出流)。
举例:RedirectSample.java
2020/8/16
Java面向对象程序设计教程
11
IOException及其子类
在java.io中,每一个特定的I/O错误都是 用异常IOException及其子类来报告的。
最常见的I/O异常有 FileNotFoundException、 EOFException、 InterruptedIOException、 UTFDataFormatError等。
stream常用函数
stream常用函数
stream是Java中一个非常重要的输入输出类,它提供了输入输出流的基本操作,可以进行文件读写、网络传输等操作。
在使用stream 时,以下是一些常用的函数:
1. FileInputStream/FileOutputStream:用于读写文件的输入输出流。
2. BufferedReader/BufferedWriter:用于读写字符流的输入输出流,可以一次读取一行数据。
3. InputStreamReader/OutputStreamWriter:用于读写字节流和字符流之间的转换。
4. DataInputStream/DataOutputStream:用于读写基本数据类型的输入输出流。
5. ObjectInputStream/ObjectOutputStream:用于读写对象的输入输出流。
6. PrintStream/PrintWriter:用于输出格式化的数据。
7. InputStream/OutputStream:所有输入输出流的父类。
8. Reader/Writer:所有字符流的父类。
以上这些函数是stream中最常用的一些函数,掌握它们可以让我们在编写Java程序时更加方便、高效地进行文件读写和数据传输。
- 1 -。
JAVA输入输出流
int read() int read(byte[] buffer) int read(byte[] buffer, int offset, int length)
其它方法:
void close() int available() skip(long n) boolean markSupported() void mark(int readlimit) void reset()
9.4常用输入输出流类(2)
FileReader-文件字符输入流
构造方法: public FileReader(String name) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException
方法:参见InputStream FileOutputStream-文件字节输出流
构造方法: public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException 方法:参见OutputStream
//标准输出流System.out是字节输出流
//把标准输出流转化成缓冲字节输出流 /用BufferedOutputStream中函数Write输出 //数据从缓冲区中全部输出
import java.io.*; public class Test3 { public static void main(String[] args) throws IOException{ String s = "Hello"; OutputStreamWriter o = new OutputStreamWriter(System.out); o.write(s); 把标准字节输出流转化 成字符输出流 o.flush(); } }
Java中常用数据类型的输入输出详解
Java中常⽤数据类型的输⼊输出详解⽬录1、Char型1.1 输⼊格式:1.2 举例说明2、int型1.1 简单的int格式输⼊:1.2 举例说明2.1带空格的int格式输⼊:2.2 举例说明3.1 复杂int格式的输⼊3.2 举例说明3、double型1.1 double保留两位格式输出1.2 举例说明4、多次输⼊1.1 输⼊格式1.2 举例说明5、数组1.1 数组输⼊格式:2.1 数组转换成字符串6、字符串1.1 字符串转换成整型,浮点型(以整型为例)1.2 整型,浮点型转换成字符串2.1 字符串转换成字符数组2.2 字符数组转换成字符串3 举例说明7、写在最后C语⾔学习完转到Java后,第⼀个感觉就是Java的写法很复杂,同时,在常⽤的数据类型的输⼊输出上也没有C语⾔那么⽅便。
在C语⾔上⾯,⽤ scanf 函数可以很⽅便的输⼊⼤多数格式,在Java上却不⾏,Java当中没有类似于scanf的语句。
本⽂搭配本⼈的输⼊输出习惯及做题的记录,对这些不同类型的如整型的,是整型的但隔开参数的...做⼀个总结。
下⾯的说明中主类均为Main类,我们使⽤Scanner来进⾏输⼊。
每⼀种输⼊或输出可能有多种⽅法,本⼈只写了较为简单的写法。
1、Char型这⾥说的char型指的是只输⼊⼀个字符的情况。
1.1 输⼊格式:import java.io.IOException;//导⼊包public class Main {public static void main(String[] args) throws IOException {char ch = (char)System.in.read();//<1>System.out.println((int)ch);}}说明:需要搭配IOException异常来使⽤。
<1>中,System.in就是从标准输⼊流(最常见的是键盘)输⼊,rand()⽅法是从这个流⾥⾯读取输⼊的内容。
java
System.out.println("文件名: "+myFile.getName()); System.out.println("文件的相对路 径:"+myFile.getPath()); System.out.println("文件绝对路 径:"+myFile.getAbsolutePath()); System.out.println("上一级目录 名:"+myFile.getParent());
(2)public File(String pathname, String name); 参数pathname指明新创建的文件对象 所对应的文件所在的路径,可以是绝对路 径或相对路径。参数name指明新创建的文 件对象所对应文件的名称。将路径和名称 分开可使具有相同路径的文件具有同一个 路径字符串,而且方便管理。 例如: File myFile=new File("c:\java", "test.txt");
System.out.println("文件长 度:"+myFile.length()); System.out.println("是文件 吗?"+myFile.isFile()); System.out.println("是目录 吗?"+myFile.isDirectory()); System.out.println("是否可 写?"+myFile.canWrite());
第9章 Java输入输出
9.1 Java输入输出概述
9.2 文 件 处 理 9.3 目 录 管 理
java标准输入输出常用方法
java标准输入输出常用方法Java标准输入输出是Java编程语言中常用的输入输出方式,它们提供了方便快捷的数据传输功能。
在Java中,标准输入输出包括标准输入流(stdin)、标准输出流(stdout)和标准错误输出流(stderr)。
这些流对象都是java.io包中的抽象类,它们提供了许多常用的方法来实现数据的输入输出操作。
一、标准输入流(stdin)标准输入流是一个常用的输入流对象,通常用于从控制台读取用户输入的数据。
Java提供了许多常用的方法来实现对标准输入流的读取操作。
以下是一些常用的方法:1.read()方法:用于从标准输入流中读取一个字节数据,并返回该数据的字节值。
如果读取成功,返回值为1;如果读取失败或到达文件末尾,返回值为-1。
示例代码:```javaintdata=stdin.read();```2.readLine()方法:用于从标准输入流中读取一行数据,并返回该行的字符串值。
该方法会一直读取直到遇到换行符或到达文件末尾。
示例代码:```javaStringline=stdin.readLine();```3.readInt()方法:用于从标准输入流中读取一个整数数据,并返回该数据的整数值。
该方法会读取一个整数数据,并将其存储在一个int类型的变量中。
示例代码:```javaintnum=stdin.readInt();```需要注意的是,在使用标准输入流时,需要注意控制台的缓冲区大小和读取速度,以免造成数据丢失或程序崩溃。
二、标准输出流(stdout)标准输出流是一个常用的输出流对象,通常用于将数据输出到控制台或文件。
Java提供了许多常用的方法来实现对标准输出流的输出操作。
以下是一些常用的方法:1.write()方法:用于将一个字节数据写入到标准输出流中。
该方法需要一个byte类型的参数,表示要写入的字节数据。
示例代码:```javastdout.write(data);```2.print()方法:用于将一个对象写入到标准输出流中,并自动将其转换为字符串形式进行输出。
java输入输出流实验报告总结】
java输入输出流实验报告总结】Java输入输出流实验报告总结在本次实验中,我们学习了Java的输入输出流的概念和用法。
输入输出流是Java中用于处理输入和输出操作的工具。
通过输入流,我们可以将外部数据输入到程序中进行处理,通过输出流,我们可以将程序中的数据输出到外部文件或设备上。
在本次实验中,我们通过几个具体的示例来探索输入输出流的不同用法和特性,以期更好地理解和掌握它们的使用。
首先,我们学习了如何使用FileInputStream和FileOutputStream这两个类来进行字节流的输入和输出操作。
这两个类分别用于从指定文件中读取字节数据和将字节数据写入到指定文件中。
通过这两个类,我们可以实现文件的拷贝、移动、创建等功能。
同时,我们还了解了如何使用BufferedInputStream和BufferedOutputStream这两个类来提高读写效率。
这两个类可以通过缓存数据来减少对底层系统的IO操作次数,从而提高读写速度。
接下来,我们学习了如何使用FileReader和FileWriter这两个类进行字符流的输入和输出操作。
这两个类与字节流的输入输出类似,但它们处理的是字符数据。
通过这两个类,我们可以读取和写入文本文件中的字符数据。
我们还了解了字符编码和字符集的概念,并学习了如何使用InputStreamReader和OutputStreamWriter来进行字符流和字节流之间的转换。
除了字节流和字符流,我们还学习了对象流的使用。
对象流可以将Java 对象直接写入到文件中,也可以从文件中读取Java对象。
这在处理一些复杂的对象数据时非常有用。
我们通过使用ObjectInputStream和ObjectOutputStream这两个类,实现了对象的读写操作。
需要注意的是,被写入和读取的对象必须实现Serializable接口,否则会抛出NotSerializableException异常。
在实验过程中,我们还探索了如何使用标准输入输出流。
java 输入窗口和输出窗口写法
一、背景介绍1. Java是一种面向对象的编程语言,广泛应用于企业级应用开发和互联网应用开发领域。
2. 在Java编程中,输入窗口和输出窗口是常用的交互界面,用于接收用户输入和显示程序运行结果。
3. 本文将介绍Java中输入窗口和输出窗口的写法,以及常见的应用场景。
二、输入窗口的写法1. 使用Scanner类来实现输入窗口。
Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();// 读取用户输入并存储到变量input中2. 使用JOptionPane类来实现图形化输入窗口。
String input = JOptionPane.showInputDialog("请输入内容:");// 弹出带有输入框的窗口,等待用户输入,并将用户输入的内容存储到变量input中三、输出窗口的写法1. 使用System.out.println()来实现控制台输出。
System.out.println("Hello, World!");// 在控制台输出字符串"Hello, World!"2. 使用JOptionPane类来实现图形化输出窗口。
JOptionPane.showMessageDialog(null, "Hello, World!"); // 弹出带有消息提示框的窗口,显示字符串"Hello, World!"四、输入窗口和输出窗口的应用场景1. 输入窗口的应用- 用户信息输入:例如登录界面、注册界面等需要用户输入信息的场景。
- 数据采集:例如统计调查、问卷调查等需要用户提供信息的场景。
2. 输出窗口的应用- 程序执行结果展示:用户操作的反馈信息、程序执行的结果展示等应用场景。
- 提示信息显示:警告、错误提示、成功提示等信息的显示。
Java输入输出流(一)——常用的输入输出流
Java输⼊输出流(⼀)——常⽤的输⼊输出流1.流的概念:在Java中,流是从源到⽬的地的字节的有序序列。
Java中有两种基本的流——输⼊流(InputStream)和输出流(OutputStream)。
根据流相对于程序的另⼀个端点的不同,分为节点流和过滤流。
(1)节点流:以特定源如磁盘⽂件、内存某区域或者线程之间的管道为端点的构造输⼊输出流,是⼀种基本的流。
(2)过滤流:以其他已经存在的流为端点构造的输⼊输出流。
根据流中的数据单位分为字节流和字符流。
(1)字节流:流中的数据是以8位字节为单位进⾏读写,以InputStream和OutputStream为基础类。
(2)字符流:流中的数据是以16为字符为单位进⾏读写,以Reader和Writer为基础类。
2.字节流InputStream和OutputStream是字节流的两个顶层⽗类,提供了输⼊流类和输出流类的通⽤API。
2.1 输⼊字节流InputStream基本⽅法:(1)基本读⽅法;: int read() int read(byte[] b) int read(byte[] b,int off,int len)(2) 关闭流:void close()(3) 返回输⼊流中还有多少可读字节 int available()(4) 跳过指定字节 long skip(long n)(5) 回读数据 boolean markSupported() void Mark(int readlimt) void reset()2.2 输出字符流OutputStream基本⽅法:(1)基本写⽅法:void write(int c) void write(byte[] b) void write(byte[] b,int off,int len)(2) 关闭流:void close()(3)q强制输出:void flush()3.字符流:Reader和Writer是字符流的顶层⽗类,字符流能够处理Unicode字符集中的所有字符。
第7章Java的输入输出PPT课件
14
7.2 流的综述
流可以被理解为一条“导管”
• 这条“导管”有两个端口:
– 一端与数据源(当输入数据时)或数据宿(当输出数据时) 相连
• Java语言中通过File类来建立与磁盘文件的联系。 • File类用来获取或设置文件或目录的属性,但不
支持从文件读取数据或者往文件里写数据。 • 文件是许多程序的基本数据源和数据宿,是保存
永久数据和共享信息的媒体。在Java中,目录也 被当作文件,可以用list方法列出目录中文件名。
8
创建文件对象有三种构造方法
3
输入输出方法
• System类管理标准输入输出流和错误流
System.out: 把输出送到缺省的显示(通常是显示器) System.in 从标准输入获取输入(通常是键盘) System.err 把错误信息送到缺省的显示
• 每当main方法被执行时,就自动生成上述三个 对象
4
输入输出方法举例
public class ReadHello
import java.io.*;
class {
public static void main(String args[ ]) {
System.out.println("Enter : ");
char c;
StringBuffer buf = new StringBuffer();
try {
while ((c = (char)System.in.read()) != '\n')
• ⑶ File构造方法三:
– public <pathname>) – 例如: – File(“c:\\yao-bin\\test.java”);
第三章 Java的输入与输出
前一页
休息
9
前一页
休息
10
前一页
休息
11
JAVA程序设计教程
第三章 Java的输入/输出
本章主要内容
标准输入输出 命令行输入输出应用 流式交互输入输出简单应用 GUI输入输出简单应用
前一页
休息
2
标 准 输 入 输 出 方 法
标准输出方法
System类含有标准打印流PrintStream类的成
员变量out,我们可以调用它的print 、println 或 write方法来输出各种类型的数据。
例3-1
前一页
休息
3
◆ 用System.out.println()或System.out.print()可输出串值、表达式的 值,允许使用并置符号“+”,将变量、表达式或一个常数值与一 个字符串并置一起输出,如: System.out.println(m+"个数的和为"+sum); System.out.println(“:”+123+“大于”+122) ◆JDK1.5新增了和C语言中printf函数类似的数据输出方法,该方 法使用格式如下: System.out.printf("格式控制部分",表达式1,表达式2,…表 达式n) 格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字 符组成,普通字符原样输出, 输出数据时也可以控制数据位数 %md:输出的int型数据占m列 %m.nf:输出的浮点型数据 占m列,小数点保留n位。
前一页
休息
7
流式交互输入输出的应用
例3-6
前一页
休息
8
java 标准输入输出流 print 和println输出的区别
java 标准输入输出流print 和println输出的区别
标准输入输出流
1、System类中的静态对象in,标准输入流in
在程序开始之后它会自动开启,对应至键盘或其他的输入来源
2、System.out:标准的输出对象,System类中的静态对象out,标准输出流out
(1)、提供标注输出流(Stream)输出
标准的输出对象的作用:支持定向输出
(2)、通常对应至显示输出(终端机输出)
(3)、可以将输出重新导向至一个文件
如:在当前文件夹下创建一个out.txt文档。
javademo>out.txt 意思是将demo中的结果输出到out.txt中。
javademo>>out.txt 意思是将demo中的结果追加定向输出到out.txt中。
(及保留之前的输出信息
3、System.err:标准的错误输出对象
注:(1)、System.err不支持定向输出
(2)、标准错误输出流err,直接输出到屏幕,让用户马上知道错误
在java中print 和println输出的区别
打印效果
注意:
print()//System.out.print();
print()//System..out.println();如果没有值,就相当于换行原文地址:/showtopic-2241.aspx。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入输出流1、流的概念Java程序通过流来完成输入/输出。
流是生产或消费信息的抽象。
流通过Java的输入/输出系统与物理设备链接。
尽管与它们链接的物理设备不尽相同,所有流的行为具有同样的方式。
这样,相同的输入/输出类和方法适用于所有类型的外部设备。
这意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字。
同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。
流是处理输入/输出的一个洁净的方法,例如它不需要代码理解键盘和网络的不同。
Java中流的实现是在java.io包定义的类层次结构内部的。
2、输入输出流概念2.1 输入/输出时,数据在通信通道中流动。
所谓“数据流(stream)”指的是所有数据通信通道之中,数据的起点和终点。
信息的通道就是一个数据流。
只要是数据从一个地方“流”到另外一个地方,这种数据流动的通道都可以称为数据流。
2.2 输入/输出是相对于程序来说的。
程序在使用数据时所扮演的角色有两个:一个是源,一个是目的。
若程序是数据流的源,即数据的提供者,这个数据流对程序来说就是一个“输出数据流”(数据从程序流出)。
若程序是数据流的终点,这个数据流对程序而言就是一个“输入数据流”( 数据从程序外流向程序)。
3、输入输出流在java.io包中提供了60多个类(流)。
3.1 从功能上分为两大类:输入流和输出流。
3.2从流结构上可分为字节流(以字节为处理单位或称面向字节)和字符流(以字符为处理单位或称面向字符)。
3.3字节流的输入流和输出流基础是InputStream 和OutputStream 这两个抽象类,字节流的输入输出操作由这两个类的子类实现。
字符流是Java 1.1版后新增加的以字符为单位进行输入输出处理的流,字符流输入输出的基础是抽象类Reader 和Writer4、字节流和字符流Java 2 定义了两种类型的流:字节流和字符流。
字节流(byte stream)为处理字节的输入和输出提供了方便的方法。
例如使用字节流读取或写入二进制数据。
字符流(character stream)为字符的输入和输出处理提供了方便。
它们采用了统一的编码标准,因而可以国际化。
当然,在某些场合,字符流比字节流更有效。
•Java的原始版本(Java 1.0)不包括字符流,因此所有的输入和输出都是以字节为单位的。
Java 1.1中加入了字符流的功能。
•需要声明:在最底层,所有的输入/输出都是字节形式的。
基于字符的流只为处理字符提供方便有效的方法•字节流类(Byte Streams)字节流类用于向字节流读写8位二进制的字节。
一般地,字节流类主要用于读写诸如图象或声音等的二进制数据。
•字符流类(Character Streams)字符流类用于向字符流读写16位二进制字符。
•两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。
可从中读出一系列字节的对象称为输入流。
而能向其中写入一系列字节的对象称为输出流。
输入流:•读数据的逻辑为:open a streamwhile more informationread informationclose the stream输出流:写数据的逻辑为:open a streamwhile more informationwrite informationclose the stream•节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
•过滤流:使用节点流作为输入或输出。
过滤流是使用一个已经存在的输入流或输出流连接创建的。
•字节流类为处理字节式输入/输出提供了丰富的环境。
一个字节流可以和其他任何类型的对象并用,包括二进制数据。
这样的多功能性使得字节流对很多类型的程序都很重要。
•字节流类以InputStream 和OutputStream为顶层类,他们都是抽象类(abstract)•抽象类InputStream 和OutputStream定义了实现其他流类的关键方法。
最重要的两种方法是read()和write(),它们分别对数据的字节进行读写。
两种方法都在InputStream 和OutputStream中被定义为抽象方法。
它们被派生的流类重写。
•每个抽象类都有多个具体的子类,这些子类对不同的外设进行处理,例如磁盘文件,网络连接,甚至是内存缓冲区。
•要使用流类,必须导入java.io包5、Inputstream•三个基本的读方法abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
int read(byte[] b) :将数据读入一个字节数组,同时返回实际读取的字节数。
如果返回-1,表示读到了输入流的末尾。
int read(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。
如果返回-1,表示读到了输入流的末尾。
off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。
•其它方法long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。
int available() :返回在不发生阻塞的情况下,可读取的字节数。
void close() :关闭输入流,释放和这个流相关的系统资源。
void mark(int readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。
void reset() :返回到上一个标记。
boolean markSupported() :测试当前流是否支持mark和reset方法。
如果支持,返回true,否则返回false。
•该类的所有方法在出错条件下引发一个IOException 异常•通过打开一个到数据源(文件、内存或网络端口上的数据)的输入流,程序可以从数据源上顺序读取数据。
•InputStream中包含一套字节输入流需要的方法,可以完成最基本的从输入流读入数据的功能。
当Java程序需要外设的数据时,可根据数据的不同形式,创建一个适当的InputStream子类类型的对象来完成与该外设的连接,然后再调用执行这个流类对象的特定输入方法来实现对相应外设的输入操作。
•InputStream 类子类对象自然也继承了InputStream类的方法。
常用的方法有:读数据的方法read() ,获取输入流字节数的方法available(),定位输入位置指针的方法skip()、reset()、mark()等。
6、OutputStream•三个基本的写方法abstract void write(int b) :往输出流中写入一个字节。
void write(byte[] b) :往输出流中写入数组b中的所有字节。
void write(byte[] b, int off, int len) :往输出流中写入数组b中从偏移量off 开始的len个字节的数据。
•其它方法void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
void close() :关闭输出流,释放和这个流相关的系统资源。
7、过滤流•在InputStream 类和OutputStream 类子类中,FilterInputStream 和FilterOutputStream过滤流抽象类又派生出DataInputStream和DataOutputStream 数据输入输出流类等子类。
•过滤流的主要特点是在输入输出数据的同时能对所传输的数据做指定类型或格式的转换,即可实现对二进制字节数据的理解和编码转换。
•数据输入流DataInputStream 中定义了多个针对不同类型数据的读方法,如readByte() 、readBoolean() 、readShort() 、readChar() 、readInt() 、readLong() 、readFloat()、readDouble()、readLine()等。
•数据输出流DataOutputStream中定义了多个针对不同类型数据的写方法,如writeByte() 、writeBoolean() 、writeShort()、writeChar()、writeInt()、writeLong()、writeFloat()、writeDouble()、writeChars()等。
•过滤流在读/写数据的同时可以对数据进行处理,它提供了同步机制,使得某一时刻只有一个线程可以访问一个I/O流,以防止多个线程同时对一个I/O流进行操作所带来的意想不到的结果。
•类FilterInputStream和FilterOutputStream分别作为所有过滤输入流和输出流的父类。
•FileInputStream和FileOutputStream节点流,用于从文件中读取或往文件中写入字节流。
如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。
•BufferedInputStream和BufferedOutputStream过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。
•DataInputStream和DataOutputStream过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。
•PipedInputStream和PipedOutputStream管道流,用于线程间的通信。
一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。
要使管道流有用,必须同时构造管道输入流和管道输出流。
Java 输入输出类的设计原则•Java的I/O库提供了一个称做链接的机制,可以将一个流与另一个流首尾相接,形成一个流管道的链接。
这种机制实际上是一种被称为Decorator(装饰)设计模式的应用。
•通过流的链接,可以动态的增加流的功能,而这种功能的增加是通过组合一些流的基本功能而动态获取的。
•我们要获取一个I/O对象,往往需要产生多个I/O对象,这也是Java I/O 库不太容易掌握的原因,但在I/O库中Decorator模式的运用,给我们提供了实现上的灵活性。
例子1import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class InputStreamTest1 {public static void main(String[] args) throws IOException { InputStream is=new FileInputStream("file/a.txt");byte[] buffer=new byte[100];int length=0;while(-1!=(length=is.read(buffer, 0, 100))){String str=new String(buffer,0,length);System.out.println(str);}is.close();}}例子2import java.io.*;public class OutputStream1 {public static void main(String[] args) throws Exception { OutputStream fos=new FileOutputStream("file/a.txt",true);String str="\ngood morning!";byte[] buffer=str.getBytes();fos.write(buffer);fos.close();}}例子3import java.io.*;public class CopyFiletoFile {public static void main(String[] args) throws IOException { InputStream fis=new FileInputStream("file/aa.jpg");OutputStream fos=new FileOutputStream("file/bb.jpg");BufferedInputStream bis=new BufferedInputStream(fis);BufferedOutputStream bos=new BufferedOutputStream(fos);while(bis.available()>0){bos.write(fis.read());}System.out.println("拷贝完毕!");bis.close();bos.close();}}例子4:public class DataStream1{public static void main(String[] args) throws Exception{DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("file/data.txt")));byte b = 11;int i = 18;char ch = 'c';float f = 3.6f;dos.writeByte(b);dos.writeInt(i);dos.writeChar(ch);dos.writeFloat(f);dos.close();DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream("file/data.txt")));//读和写的顺序要保持一致System.out.println(dis.readByte());System.out.println(dis.readInt());System.out.println(dis.readChar());System.out.println(dis.readFloat());dis.close();}}例子5import java.io.BufferedReader;import java.io.FileReader;public class FileReader1{public static void main(String[] args) throws Exception {FileReader fr = new FileReader("file/c.txt");BufferedReader br = new BufferedReader(fr);String str;while (null != (str = br.readLine())){System.out.println(str);}br.close();}}例子6import java.io.FileWriter;public class FileWriter1{public static void main(String[] args) throws Exception {String str = "中华人民共和国";char[] buffer = new char[str.length()];str.getChars(0, str.length(), buffer, 0);FileWriter f = new FileWriter("file/b.txt");for(int i = 0; i < buffer.length; i++){f.write(buffer[i]);}f.close();}}。