java基础之IO操作
2013-03-11 10:33
711 查看
在java中,把能够读取和写入字节的对象称为字节输入输出流;把能读取和写入字符的对象称为字符输入输出流。前者用来处理字节,后者用来处理字符。
因此java的IO体系分为InputStream/OutputStream和Reader/Writer两类。java.io是大多数io对象的包。Reader/Writer类下的子类,与InputStream/OutputStream类的子类相似,区别仅在于在读写文本时能自动转换内码。
java标准输入输出流:Stdin,Stdout,Stderr。
(1)Stdin :System.in作为InputStream类的一个子类实现stdin。可以使用成员函数read()和skip();
(2)Stdout:System.out作为PrintStream的一个实现来实现stdout,可以使用成员函数print()和pintln();
(3)Stderr:System.err同stdout一样实现stderr,可以使用print(),println();
以字节为导向的Stream:InputStream,OutputStream
OutputStream:与InputStream对应;
FileOutStream:与FileInputStream对应;
ByteArrayOutputStream:与ByteArrayInputStream对应;
DataOutputStream:与DataInputStream对应;
BufferedOutputStream:与BufferedInputStream对应;
字符导向IO对象:
Reader的子类:BufferedReader,CharArrayReader,InputStreamReader,StringReader,FileReader
Writer的子类:BufferedWriter,CharArrayWriter,OutputStreamWriter,StringWriter,FileWriter
输入流常用函数:int available(),int read()
输出流常用函数:write(),flush(),close()
个人总结:
(1)File与FileInputStream:FileInputStream关注流的内容,File关注的是文件的存在和性质
(2)字符流处理FileReader和InputStreamReader:前者采用系统默认字符集打开文件,后者构造器中可以设置打开方式
(3)BufferedReader与BufferedInputStream:都是为流创建缓冲区,提高读写速度。前者用于Reader的子类,后者用于InputStream的子类。
(4)FileInputStream与DataInputStream的区别:后者提供了更加丰富的读取文件的方法,readInt(),readDouble()等
较好的使用规范:
1) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream(file);
2) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream(file);
InputStreamReader inReader=new InputStreamReader(in);
BufferedReader bufReader=new BufferedReader(inReader);
3) File file = new File ("hello.txt");
FileReader fileReader=new FileReader(file);
BufferedReader bufReader=new BufferedReader(fileReader);
因此java的IO体系分为InputStream/OutputStream和Reader/Writer两类。java.io是大多数io对象的包。Reader/Writer类下的子类,与InputStream/OutputStream类的子类相似,区别仅在于在读写文本时能自动转换内码。
java标准输入输出流:Stdin,Stdout,Stderr。
(1)Stdin :System.in作为InputStream类的一个子类实现stdin。可以使用成员函数read()和skip();
(2)Stdout:System.out作为PrintStream的一个实现来实现stdout,可以使用成员函数print()和pintln();
(3)Stderr:System.err同stdout一样实现stderr,可以使用print(),println();
import java.io.*; public class Stdin_out_Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub char[] ch=new char[10]; int b; int i=0; System.out.print("Input Chars:\n"); try { while((b=System.in.read())!=-1) //读到流结束返回-1 { i++; if(i<6) System.out.print((char)b); else System.err.print((char)b); } } catch (IOException e) { e.printStackTrace(); // TODO: handle exception } System.out.print("\n"+"Total :" + i); } }
以字节为导向的Stream:InputStream,OutputStream
OutputStream:与InputStream对应;
FileOutStream:与FileInputStream对应;
ByteArrayOutputStream:与ByteArrayInputStream对应;
DataOutputStream:与DataInputStream对应;
BufferedOutputStream:与BufferedInputStream对应;
字符导向IO对象:
Reader的子类:BufferedReader,CharArrayReader,InputStreamReader,StringReader,FileReader
Writer的子类:BufferedWriter,CharArrayWriter,OutputStreamWriter,StringWriter,FileWriter
输入流常用函数:int available(),int read()
输出流常用函数:write(),flush(),close()
个人总结:
(1)File与FileInputStream:FileInputStream关注流的内容,File关注的是文件的存在和性质
(2)字符流处理FileReader和InputStreamReader:前者采用系统默认字符集打开文件,后者构造器中可以设置打开方式
(3)BufferedReader与BufferedInputStream:都是为流创建缓冲区,提高读写速度。前者用于Reader的子类,后者用于InputStream的子类。
(4)FileInputStream与DataInputStream的区别:后者提供了更加丰富的读取文件的方法,readInt(),readDouble()等
较好的使用规范:
1) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream(file);
2) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream(file);
InputStreamReader inReader=new InputStreamReader(in);
BufferedReader bufReader=new BufferedReader(inReader);
3) File file = new File ("hello.txt");
FileReader fileReader=new FileReader(file);
BufferedReader bufReader=new BufferedReader(fileReader);
相关文章推荐
- java基础——文件(IO)操作2
- IO流下:字节流、流操作规律(java基础)
- 【JAVA基础】 IO操作小结——节点流和处理流
- JAVA 基础 (四) IO操作
- [零基础学JAVA]Java SE应用部分-27.Java IO操作(01) 推荐
- Java基础之IO操作
- Java-基础 文件操作IO 检测文件是否存在
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- Java IO 操作基础2---操作 ZIP 压缩文件
- java基础—java的Io操作学习(2)
- java IO文件操作简单基础入门例子,IO流其实没那么难
- [零基础学JAVA]Java SE应用部分-30.Java IO操作(04) 推荐
- [零基础学JAVA]Java SE应用部分-31.Java IO操作(05)IO操作实例讲解之实现简单MIS 推荐
- Java-基础 文件操作IO-读取文件内容
- java基础—java的Io操作学习(1)
- 黑马程序员——Java基础----IO(字节流、操作规律等)(2)
- java基础——文件(IO)操作1
- 黑马程序员 java基础IO操作原则随笔
- JAVA基础之IO操作
- Java自学之路-Java基础教程-32:Java写文件操作和IO输入输出流