黑马软件工程师_Java IO之OutputStream、InputStream、Writer、Reader类的使用
---------------------- android培训、java培训、期待与您交流! ----------------------
在Java IO中提供了两种类型的操作流:
-->字符流:以字符为单位的操作流
-->字节流:以字节为单位的操作流
每种类型的流又可细分为输入流和输出流,下面就对其最大父类做一分析。
public abstract class OutputStream
public abstract class InputStream
public abstract class Writer
public abstract class Reader
从四个类的定义可以发现其都被定义为抽象类,即不能通过自身进行对象的实例化操作,要想使用这四个类必须依靠子类对其进行实例化,即通过对象的多态性。
下面分别用字符流和字节流从一个文件中读取一串Hello World!!!,并将其输出到显示器上:
1.通过字节流进行操作:
package heima.inputstream.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class InputStreamTest {
public static void main(String[] args) {
// 实例化一个文件,准备从其中读取数据
File file = new File("F:" + File.separator + "source.txt");
InputStream input = null;
OutputStream out = null;
byte[] b = new byte[14];
try {
// 通过对象多态性为InputStream类进行实例化
input = new FileInputStream(file);
// 指定输出的位置为显示器
out = System.out;
// 将文件中的内容读到一个字节数组当中
input.read(b);
// 输出一个字节数组
out.write(b);
// 关闭输入输出流
input.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.通过字节流进行操作:
package heima.reader.test; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class ReaderTest { public static void main(String[] args) { // 实例化一个文件,准备从其中读取数据 File file = new File("F:" + File.separator + "source.txt"); Reader reader = null; char[] c = new char[14]; try { // 通过对象多态性为Reader类进行实例化 reader = new FileReader(file); // 将文件中的内容读取到一个字符数组 reader.read(c); // 关闭输入流 reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(new String(c)); } }
字节流和字符流在使用上非常相似,就二者的不同进行简单的比较:
--> 字节流在使用时并不会用到缓冲区,即内存,直接就是操作文件
本身,而字符流在使用时使用了缓冲区,通过缓冲区再对文件进
行操作。因为在字符流的操作中,所有的字符都是在内存中形成
的,输出前会将内容暂时保存在内存之中。
--> 所有的文件(包括图片、声音、视频等各种文件)都是按照字节存
贮的,在传递的过程中也是按照字节流的形式进行传递的;而字
符只有在内存中才会形成。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima