Java的输入输出系统
2014-09-24 20:55
316 查看
Java提供了专用于输入输出功能的包java.io,其中包含了5个非常重要的类,所有与输入输出有关的类都继承了这5个类
文件流 FileInputStream FileOutputStream
字节流 InputStream OutputStream
字符流 Reader Writer
过滤流 FilterInputStream FilterOutputStream
基本流 System.out System.in
按所读写的数据类型分为两类:
字节流类(Byte Streams):字节流类用于向字节流读写8位二进制的字节。一般地,字节流类主要用于读写诸如图像或声音等的二进制数据
字符流类(Character Streams):字符流类用于向字符流读写16位二进制字符
InputStream类
类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能
当java程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用执行该新建对象的特定方法,实现对应外设的操作。
InputStream子类对象继承InputStream类的如下方法
read()方法、定位指针的方法、close()方法
public int read()
每次执行时都从输入流的当前位置读入一个字节的二进制数据,读数作为低字节,高字节用零填满,合成一个16位整型量返回,若输入流当前位置无数据返回-1
使用完毕后,应用close()方法关闭流
InputStream常用子类
FileInputStream
用于从文件File中将诸如图像数据之类的原始字节的数据流读出
ByteInputStream
此类实现了一个输入流,从一个byte数组中读出数据
ObjectInputStream
实现对象的持久存储,从OutputStream读入java对象的基本数据类型和图形
OutPutStream类
当java程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用OutputStream类提供的方法将数据写入该外设中
OutputStream类是一个抽象类,不能直接创建OutputStream类对象,而应该创建它的某个子类的对象。
子类的继承方法有:
Write()方法、flush()方法和close()方法
public void write(int c); 将参数c对应的字符写入输出流
public void write(char array[]); 将字符数组array中全部字符顺序写入输出流
使用完毕后,应用close()方法关闭流
OutputStream常用子类
FileOutputStream
用于将诸如图像数据之类的原始字节的数据流写入File
ByteArrayOutputStream
此类实现了一个输出流,数据被写入一个byte数组
ObjectOutputStream
实现对象的持久储存,将java对象的基本数据类型和图形写入OutputStream
PipedOutputStream
将管道输出流连接到管道输入流来创建通信管道
Reader类
用来以字符方式从流中读入数据。Reader类中包含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能
Reader类是一个抽象类,所以实际应用中创建的对象是Reader某个子类的对象,通过该子类对象与外接数据源连接
子类必须实现的方法只有
int read(char[] b,int offset,int length);
void close();
当输入流使用完毕后,可以调用该方法将其关闭,断开java程序与外接数据源的联系,释放此连接所占用的系统资源
Reader类常用子类
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
可以指定缓冲区的大小
InputStreamReader
字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符
每次调用InputStreamReader的read()方法都会导致从底层输入流读取一个或多个字节
FileReader
用来读取字符文件的类
用于读取字符流
Writer类
用来以字符方式从流中写入数据。Writer类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能
Writer类是一个抽象类,所以实际应用中创建的对象是Writer某个子类的对象,通过该子类对象与外接数据源连接
子类必须实现的方法只有
void write(char[] b,int offset,int length);
void close();
void flush();//强制清空缓冲区
当输出流使用完毕后,关闭输出流,断开java程序与外接数据源的连接,释放此连接所占用的系统资源
Writer类常用子类
BufferedWriterStream
将文本写入字符输出流,缓冲各个字符
可以指定缓冲区的大小
OutputStreamWriter
字符流通向字节流的桥梁:它使用指定的charset将要写入流中的字符编码为字节
每次调用write()方法都会导致在给定字符(或字符集)上调用编码转换器
FileWriter
用来写入字符文件的类
文件是否可用或是否可以被创建取决于底层平台
PrintWriter
向文本输出流打印对象的格式化表示形式
文件处理
File类
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
exists()
测试此抽象路径名表示的文件或目录是否存在
canRead()
测试应用程序是否可以读取此抽象路径名表示的文件
listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
mkdir()
创建此抽象路径名指定的目录
使用BufferWriter类的方法:
为文件建立FileWriter对象
再为该FileWriter对象建立BufferWriter类对象
写入操作将使用所建立的BufferWriter类对象
向磁盘文件写入各类数据
java通过DataInputStream & DataOutputStream类实现各类数据的读写。向文件写入各种类型数据的具体步骤是:
为磁盘文件建立File对象
为File对象建立FileOutputStream类流对象,建立其与磁盘文件的连接
为FileOutputStream类流对象建立DataOutputStream类对象
利用DataOutputStream类的writeInt(),writeFloat(),writeDouble(),writeBoolean()等方法,分别向文件中写入整型、单精度型、双精度型、布尔型等数据
写入操作完成后,利用close()方法将流关闭,断开与磁盘文件的联系
基本流
java系统预先定义好3个流对象,分别表示标准输入设备、标准输出设备和标准错误设备。
System.in : 用于程序的输入; 对应外设为键盘
System.out : 用于一般输出; 对应外设为屏幕
System.err : 用于显示出错信息; 对应外设为屏幕
System类的所有属性都是静态static的,调用时以类名System为前缀。
文件流 FileInputStream FileOutputStream
字节流 InputStream OutputStream
字符流 Reader Writer
过滤流 FilterInputStream FilterOutputStream
基本流 System.out System.in
按所读写的数据类型分为两类:
字节流类(Byte Streams):字节流类用于向字节流读写8位二进制的字节。一般地,字节流类主要用于读写诸如图像或声音等的二进制数据
字符流类(Character Streams):字符流类用于向字符流读写16位二进制字符
InputStream类
类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能
当java程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用执行该新建对象的特定方法,实现对应外设的操作。
InputStream子类对象继承InputStream类的如下方法
read()方法、定位指针的方法、close()方法
public int read()
每次执行时都从输入流的当前位置读入一个字节的二进制数据,读数作为低字节,高字节用零填满,合成一个16位整型量返回,若输入流当前位置无数据返回-1
使用完毕后,应用close()方法关闭流
InputStream常用子类
FileInputStream
用于从文件File中将诸如图像数据之类的原始字节的数据流读出
ByteInputStream
此类实现了一个输入流,从一个byte数组中读出数据
ObjectInputStream
实现对象的持久存储,从OutputStream读入java对象的基本数据类型和图形
<span style="font-size:12px;">//使用FileInputStream从文件中读取字节流 //未考虑异常处理 import java.io.*; public class TestFileInputStream { public static void main(String[] args) throws Exception{ int b = 0; long num = 0; FileInputStream in = new FileInputStream("c://source.txt");//或"c:/source.txt" while((b=in.read())!=-1){//一次读一个字节,判断是否读到文件结尾 System.out.print((char)b); num++; } in.close(); System.out.println("\n共读取了 "+num+" 个字节"); } }</span>
OutPutStream类
当java程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用OutputStream类提供的方法将数据写入该外设中
OutputStream类是一个抽象类,不能直接创建OutputStream类对象,而应该创建它的某个子类的对象。
子类的继承方法有:
Write()方法、flush()方法和close()方法
public void write(int c); 将参数c对应的字符写入输出流
public void write(char array[]); 将字符数组array中全部字符顺序写入输出流
使用完毕后,应用close()方法关闭流
OutputStream常用子类
FileOutputStream
用于将诸如图像数据之类的原始字节的数据流写入File
ByteArrayOutputStream
此类实现了一个输出流,数据被写入一个byte数组
ObjectOutputStream
实现对象的持久储存,将java对象的基本数据类型和图形写入OutputStream
PipedOutputStream
将管道输出流连接到管道输入流来创建通信管道
<span style="font-size:12px;">//以字节流方式,将一个文件中的信息复制到另一个文件 //读入:程序<-FileInputStream<-文件(信息源) //写出:程序->FileOutputStream->文件(信息去向) //未考虑异常处理 import java.io.*; public class TestFileCopy_Stream { public static void main(String[] args)throws Exception { int b = 0; FileInputStream in = null; FileOutputStream out = null; //数据源,用于向程序中读取信息 in = new FileInputStream("e://source.txt"); //目标文件,程序将信息写到此文件中,会自动创建文件 out = new FileOutputStream("e://dest.txt"); while((b=in.read())!=-1){//一次读一个字节,判断是否读到文件结尾 out.write(b);//一次写一个字节 } in.close(); out.close(); System.out.println("文件已复制"); } }</span>
Reader类
用来以字符方式从流中读入数据。Reader类中包含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能
Reader类是一个抽象类,所以实际应用中创建的对象是Reader某个子类的对象,通过该子类对象与外接数据源连接
子类必须实现的方法只有
int read(char[] b,int offset,int length);
void close();
当输入流使用完毕后,可以调用该方法将其关闭,断开java程序与外接数据源的联系,释放此连接所占用的系统资源
Reader类常用子类
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
可以指定缓冲区的大小
InputStreamReader
字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符
每次调用InputStreamReader的read()方法都会导致从底层输入流读取一个或多个字节
FileReader
用来读取字符文件的类
用于读取字符流
Writer类
用来以字符方式从流中写入数据。Writer类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能
Writer类是一个抽象类,所以实际应用中创建的对象是Writer某个子类的对象,通过该子类对象与外接数据源连接
子类必须实现的方法只有
void write(char[] b,int offset,int length);
void close();
void flush();//强制清空缓冲区
当输出流使用完毕后,关闭输出流,断开java程序与外接数据源的连接,释放此连接所占用的系统资源
Writer类常用子类
BufferedWriterStream
将文本写入字符输出流,缓冲各个字符
可以指定缓冲区的大小
OutputStreamWriter
字符流通向字节流的桥梁:它使用指定的charset将要写入流中的字符编码为字节
每次调用write()方法都会导致在给定字符(或字符集)上调用编码转换器
FileWriter
用来写入字符文件的类
文件是否可用或是否可以被创建取决于底层平台
PrintWriter
向文本输出流打印对象的格式化表示形式
<span style="font-size:12px;">//输入字符串、浮点数、整数在屏幕上显示输入结果 //输入流的套接使用, //System.in -> InputStreamReader -> BufferedReader import java.io.*; public class standardIO3{ public static void main(String[] args) throws IOException{ //使用System.in创建InputStreamReader类对象ii InputStreamReader iin=new InputStreamReader(System.in); //创建BufferedReader类对象bin,并关联到iin BufferedReader bin=new BufferedReader(iin); //或者合并写成如下 //BufferedReader stdin= new BufferedReader( new InputStreamReader(System.in)); String s; float f; int i=0; System.out.println("输入任一字符串"); s=bin.readLine(); System.out.println("输入浮点数"); f=Float.parseFloat(bin.readLine()); System.out.println("输入整数"); i=Integer.parseInt(bin.readLine()); System.out.println("输入的字符串:"+s); System.out.println("输入的浮点数:"+f); System.out.println("输入的整数:"+i); } } </span>
文件处理
File类
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
exists()
测试此抽象路径名表示的文件或目录是否存在
canRead()
测试应用程序是否可以读取此抽象路径名表示的文件
listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
mkdir()
创建此抽象路径名指定的目录
使用BufferWriter类的方法:
为文件建立FileWriter对象
再为该FileWriter对象建立BufferWriter类对象
写入操作将使用所建立的BufferWriter类对象
向磁盘文件写入各类数据
java通过DataInputStream & DataOutputStream类实现各类数据的读写。向文件写入各种类型数据的具体步骤是:
为磁盘文件建立File对象
为File对象建立FileOutputStream类流对象,建立其与磁盘文件的连接
为FileOutputStream类流对象建立DataOutputStream类对象
利用DataOutputStream类的writeInt(),writeFloat(),writeDouble(),writeBoolean()等方法,分别向文件中写入整型、单精度型、双精度型、布尔型等数据
写入操作完成后,利用close()方法将流关闭,断开与磁盘文件的联系
基本流
java系统预先定义好3个流对象,分别表示标准输入设备、标准输出设备和标准错误设备。
System.in : 用于程序的输入; 对应外设为键盘
System.out : 用于一般输出; 对应外设为屏幕
System.err : 用于显示出错信息; 对应外设为屏幕
System类的所有属性都是静态static的,调用时以类名System为前缀。
相关文章推荐
- 31.JAVA编程思想——JAVA IO系统输入和输出
- java线上编程挑战系统的输入和输出详细说明
- java系统学习(十一) --------输入与输出(I/O)
- java系统学习(十一) --------输入与输出(I/O)
- 说说 Java I/O 系统之输入与输出
- Java的基本I/O(输入/输出)系统copy from (http://blog.sina.com.cn/s/blog_5ec67df20100d6ao.html)
- java.io 通过数据流、序列化和文件系统提供系统输入和输出
- Java知识点整理:第十二章:java文件系统管理、IO流(Input(输入)/Output(输出)) 、缓冲流
- JAVA输入/输出系统中的其他流学习笔记
- java--IO流-LineNumberReader,读取键盘录入,字符字节流转换,改变标准输入输出设备,异常的日志信息,系统信息
- Java的基本I/O(输入/输出)系统copy from (http://blog.sina.com.cn/s/blog_5ec67df20100d6ao.html)
- 简化java输入输出
- 在JAVA里面如何调用ORCALE数据库里的存储过程(带输入输出参数)的????
- JAVA输入/输出
- java代码从输入到输出的整个过程
- java中获取当前系统时间,日期并格式化输出
- 浅谈Java的输入输出流
- Java的输入输出流
- java初学者实践教程22-输入/输出
- Java基本数据类型的输入输出