InputStream和OutputStream

来源:互联网 发布:ewsa软件字典手机号码 编辑:程序博客网 时间:2024/06/05 17:49

什么时候用in什么时候用out? 第一:我的内存是中心,第二:看流的方向(矢量)

BufferedReader in=new BufferedReader(new InptuStreamReader(new FileInputStream(“infilename”)));

不管你从磁盘中读,从网络读读到内存,都是InputStream
写文件

BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“outfilename”)));

不管你写到磁盘,写到网络,或者写到屏幕,都是OutputStream

我们所说的流,都是针对内存说的,为什么打印到屏幕上就是System.out.println();而从屏幕等待用户输入的却是System.in呢?因为对于内存来说,把字符串打印到屏幕上是从内存流向屏幕这个显示器的,也就是输出,而从屏幕等待用户输入呢?就是等待键盘将字符输入到内存中。

往硬盘上写文件是out还是in呢?别一看到“写”文件你就说in,那是望文生义,你看,写文件的流向,是 内存———->硬盘 内存为中心,到硬盘,OK 用out 那么就是FileOutputStream、BufferedOutputStream 等等
那读文件呢?是 内存<—————硬盘 那么就是in了 , 看清楚数据的流向就OK!

InputStream输入类:首先需要读取的内容转化成输入流,再从它那里进行读取。
OutputStream输出类:首先需要与写入的目的地相关联,然后再通过它进行写入。

输入:把要读取的内容输入到输入流,再从输入流进行读取,所以是read();
输出:把要输出的东西通过输出流输出到目的地,所以是write();

实例:
向文件中写入字符串

public class OutputStream {      public static void main(String[] args) throws Exception {          File f = new File("d:" + File.separator + "test.txt");          OutputStream out = new FileOutputStream(f);          String str = "Hello";          byte[]b = str.getBytes();          out.write(b);          out.close();      }    }

从文件中读取

public class InputStream{      public static void main(String[] args) throws Exception {          File f = new File("d:" + File.separator + "test.txt");          InputStream input = new FileInputStream(f);          byte [] b =new byte [(int)f.length()];          input.read(b);          input.close();          System.out.println("内容为:" + new String(b));      }  } 

缓冲输入文件:
打开一个文件用于字符输入,可以使用String或File对象作为文件名的FileInputReader,为了提高速度,对文件进行缓冲,我们应将所产生的引用传给一个BufferedReader构造方法,BufferedReader也提供readLine()方法,所以这是我们最终的对象以及进行读取的接口,当readLine()返回null,即可判断到达文件末尾。

 /**         * BufferedReader的官方解释:         * 创建使用指定大小的输入缓冲区的缓冲!字符!输入流。         */        BufferedReader br=new BufferedReader(new FileReader(fileName));        String s;        StringBuilder sb=new StringBuilder();        while ((s=br.readLine())!=null){            sb.append(s);        }        br.close();
 public static void main(String[] args)  {        try {            //关于FileReader,跳过代码就能看到解析            BufferedReader br=new BufferedReader(new FileReader(new File("E:\\test.txt")));            StringBuilder sb =new StringBuilder();            String lines;            while((lines=br.readLine())!=null){                //因为有中文,所以使用utf-8编码格式。                //但是new String的时候要把字符串转成字节                lines=new String(lines.getBytes(),"utf-8");                sb.append(lines);            }            System.out.println(sb.toString());        } catch (IOException e) {            e.printStackTrace();        }    }

参考博客:http://blog.csdn.net/wjzj000/article/details/53911635

原创粉丝点击