当前位置:文档之家› 输入输出流和文件操作

输入输出流和文件操作


OutputStream类的子类
8.2.2 Java标准输入/输出
标准输入是从键盘等外设获得数据,标准输出是向显 示器或打印机等外设发送数据。 1. 标准输入/输出常量
public final class System extends Object { public final static InputStream in //标准输入常量 public final static PrintStream out //标准输出常量 public final static PrintStream err //标准错误输出常量 }
如果输入流结束,则返回-1。
InputStream类的子类
8.2.1 抽象字节流
2. OutputStream抽象字节输出流类
public abstract class OutputStream extends Object implements Closeable, Flushable { public abstract void write(int b) throws IOException; //写入1个字节,抽象方法 public void write(byte[] buffer) throws IOException //将字节数组写入字节流 public void flush() throws IOException//立即传输 public void close() throws IOException //关闭流 }
1. 流的定义和作用
3) 流的作用 流的目的是使数据传输独立于相关设备。 数据传输给指定设备后的操作由系统执行设备 驱动程序完成。 程序中不需关注设备实现细节。一个源程序可 以用于多种输入输出设备。
8.1.2 流的概念
2. 流的存在
程序 标准输入文本 键盘 文件 输入流 读取 输出流 打印输出文本 写入 打印机 文件 标准输出文本 显示器
//【例】使用文件字节流读写文件
import java.io.*; public class ByteFile { private String filename;
//文件名
public ByteFile(String filename) //构造方法,指定文件名 { this.filename = filename; } public void writeToFile(byte[] buffer) throws IOException //将缓冲区数据写入指定文件 { FileOutputStream fout = new FileOutputStream(this.filename,true); //为指定文件创建文件输出流对象,true表示文件添加 fout.write(buffer); //将缓冲区中数据写入输出流 fout.close(); //关闭输出流 }
public void readFromFile() throws IOException //读取指定文件中数据并显示 { FileInputStream fin = new FileInputStream(this.filename); //为指定文件创建文件输入流对象 System.out.print(this.filename+":"); byte[] buffer = new byte[512]; //字节缓冲区 int count = fin.read(buffer); //读取输入流 while (count!=-1) //输入流未结束时 { for (int i=0; i<count; i++) System.out.print(buffer[i]+" "); System.out.println("\tcount = "+count); count = fin.read(buffer); //读取输入流 } fin.close(); //关闭输入流 }
8.2.3 文件字节流
2. FileOutputStream文件字节输出流类
public class FileOutputStream extends OutputStream { public FileOutputStream(String filename) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(String filename, boolean append) throws FileNotFoundException }
1. 文件与文件系统

文件是信息的一种组织形式,是存储在外部 存储介质上的具有标识名的一组相关信息的 集合。 目录是文件系统组织和管理文件的基本单位, 保存它所管理的每个文件的基本属性信息。 文件的全名包括:路径名和文件名。
2. 目录结构与文件检索(按名存取)


8.1.1 操作系统中的文件和目录概念
8.1.3 Java的流类与文件类
1. 流类
按照流的方向性分为输入和输出流 按照流中元素的基本类型分为字节流和字符流


字节流以字节作为流中元素的基本类型,每次读写一个字节

InputStream OuputStream
抽象字节输入流类 抽象字节输出流类

字符流以字符作为流中元素的基本类型,每次读写一个字符
Input: abcdef Output: 97 98 99 100 101 102 13 10 count = 8 abcdef
8.2.3 文件字节流
文件字节输入/输出流类实现对文件进行读/写 操作中的数据传输功能。 1. FileInputSream文件字节输入流类
public class FileInputStream s InputStream { public FileInputStream(String filename) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException }
3. 文件的逻辑结构

流式文件:字节序列或字符序列 记录式文件:有结构,由记录组成 顺序存取 随机存取 操作接口 应用程序接口(API)
4. 文件的存取方式

5. 使用文件的用户接口

8.1.2 流的概念
1. 流的定义和作用
1) 流的定义、方向性和读/写操作 流是一组有顺序、有起点和终点的字节集合, 是对数据传输的总称或者抽象。数据在两个对 象之间的传输称为流。 数据流动具有方向性。分为输入流和输出流。 从流中取得数据的操作称为读操作,向流中添 加数据的操作称为写操作。一个流只能进行读 或写的一种,输入流只能读,输出流只能写。
【例】 标准输入/输出
//【例】
标准输入输出
import java.io.*; public class KeyboardInput { public static void main(String args[]) throws IOException //抛出异常交由Java虚拟机处理 { System.out.print("Input: "); byte buffer[] = new byte[512];//以字节数组作为缓冲区 int count = System.in.read(buffer); //从标准输入流中读取若干字节到指定缓冲区,返回实际读取的字节数 System.out.print("Output: "); for(int i=0;i<count;i++)//按字节方式输出buffer元素值 System.out.print(" "+buffer[i]); System.out.println("\ncount = "+ count); //实际读取的字节数 for(int i=0;i<count;i++)//按字符方式输出buffer元素值 System.out.print((char) buffer[i]); } 程序运行结果: }
第8章 输入/输出流和文件操作
• • • • 8.1 8.2 8.3 8.4 文件和流的概念 字节输入/输出流类 字符输入/输出流类 文件操作
8.1 文件和流的概念


8.1.1 操作系统中的文件和目录概念 8.1.2 流的概念 8.1.3 Java的输入/输出流与文件操作 概述
8.1.1 操作系统中的文件和目录概念
1. InputStream抽象字节输入流类
public abstract class InputStream extends Object implements Closeable { public abstract int read() throws IOException; //返回读取的一个字节,抽象方法 public int read(byte[] buffer) throws IOException //从输入流中读取若干字节到指定缓冲区,返回实际 读取的字节数 public void close() throws IOException //关闭流 }
8.1.2 流的概念
1. 流的定义和作用
2) 流采用缓冲区技术 流进行读写操作的最小单位是字节。一次读写 一个字节效率太低,因此可以将一块内存空间 设计成缓冲区暂存数据。通过缓冲区一次读写 若干字节,提高效率。 配备缓冲区的流称为缓冲流(buffered stream)
8.1.2 流的概念


Reader Writer
相关主题