zoukankan      html  css  js  c++  java
  • Java——IO(输入输出流)

    

    *
     * 想要知道开发时用到哪些数据对象,只要通过四个明确即可:
     * 1.明确源,和目的:
     * 源: InputStream reader
     * 目的: OutPutStream Writer
     * 2.明确数据是否为纯文本数据:
     * 源:是纯文本: Reader
     * 否: InputStream
     *       目的: 是纯文本;: writer
     *                 否: OutPutSream
     * 3.明确具体的设备。
     *     源设备:
     *         硬盘:File
     *         键盘:System.in
     *         内存:数组。。
     *         网络:Socket流
     *     目的设备:
     *         硬盘:File
     *            控制台:System.out
     * 内存:数组。。
     *            网络:Socket流
     * 4.是否需要其他额外功能:。。
     *     1.是否需要高效(缓冲区)
     *         是: 就加入Buffer




    //读取文件 

    public static void reader() throws FileNotFoundException, IOException

    {

    /*

     * 读取字符数据的流对象

     * 

     * 在创建读取流对象时,必须要明确被读取的文件,一定要确定 该文件是存在的。

     * 

     * 用以个读取流关联一个已存在的文件。

     */

    FileReader fr = new FileReader("");

    char[] chs = new char[1024];

    int len = 0;

    while((len=fr.read(chs)) != -1)

    {

    System.out.println(new String(chs, 0, len));

    }

    }

     

    //写入文件 的流

    public static void writer() throws IOException

    {

    //创建一个可以往文件中写入字符数据的字符流对象。

    /*

     * 既然是往一个文件中写入数据,那么在创建对象时,就必须要明确该文件(用于存储数据的目的地)

     * 

     * 如果文件不存在,则会自动创建,

     * 如果文件存在,则会被覆盖。

     * 

     * 如果构造函数中加入true   (可以实现对文件进行续写)

     */

    FileWriter fw = new FileWriter("test.txt"true);

    /*

     * 调用Writer对象中write(String)方法,写入数据。

     * 

     * 其实数据写入到了临时存储缓冲区中 。(就是写到流里边去了)

     */

    fw.write("yangchao");

    /*

     * 进行刷新,  将数据直接写入到目的地中。

     */

    fw.flush();

    /*

     * 关闭流,关闭资源。在关闭之前   先会调用flush进行刷新。

     */

    fw.close();

    }

    =================================================================================

    /*

     * 练习:

     * 需求:   将 c盘的一个文件  复制到d盘 

     * 

     * 思路:

     *  1.需要读取文件。

     *  2,将独到的源文件写入到目的地

     *  3.使用字符流

     */

    public class TestIO2

    {

    public static void main(String[] args) throws IOException

    {

    // TODO Auto-generated method stub

    //1.读取一个已有的文本文件,使用字符流读取。

    FileReader fr = new FileReader("");

    //2.创建一个目的,用于存储读到的数据。

    FileWriter fw = new FileWriter("");

    //3.频繁的 读 写  操作

    int ch = 0;

    while((ch=fr.read()) != -1)

    {

    fw.write(ch);

    }

    //4.关闭资源。

    fw.close();

    fr.close();

    }

    }

    //使用缓冲区写入

    public static void bufferedWriter() throws IOException

    {

    FileWriter fw = new FileWriter("");

    //为了提高效率。使用了字符流的缓冲区。

    //创建一个字符写入流的缓冲区对象。  并和指定要背缓冲的流对象相关联 

    BufferedWriter buf = new BufferedWriter(fw);

    //使用缓冲区的写入方法将数据先写到目的地中。

    buf.write("sldkfjlsd");

    //使用缓冲区刷新的方法将数据刷新到目的地中

    buf.flush();

    //关闭缓冲区

    buf.close();

    }


    //使用缓冲区读取

    public static void bufferedReader() throws FileNotFoundException,

    IOException

    {

    //使用BufferReader读取数据

    FileReader fr = new FileReader("");

    BufferedReader buf = new BufferedReader(fr);

    String line = null;

    while((line=buf.readLine()) != null)

    {

    System.out.println(line);

    }

    }


    ========================================================================
    读写文件。。。。

    public static void main(String[] args) throws IOException

    {

    // TODO Auto-generated method stub

    FileReader fr = new FileReader("");

    BufferedReader bufr = new BufferedReader(fr);

    FileWriter fw = new FileWriter("");

    BufferedWriter bufw = new BufferedWriter(fw);

    String line = null;

    while((line=bufr.readLine()) != null)

    {

    bufw.write(line);

    }

    /*int ch = 0;

    while((ch=bufr.read()) != 1)

    {

    bufw.write(ch);

    }*/

    bufw.close();

    bufr.close();

    }



    //使用字节流读取文件

    public static void byteStreamInput() throws FileNotFoundException,

    IOException

    {

    //1.创建一个读取文件对象,和指定文件关联

    FileInputStream fis = new FileInputStream("");

    //2.一次读一个字节

    int ch = 0;

    while((ch=fis.read()) != -1)

    {

    System.out.println((char)ch);

    }

    //3.关闭资源。

    fis.close();

    }

    //使用字节流写数据

    public static void byteStreamWriter() throws FileNotFoundException,

    IOException

    {

    //1,创建字节流输出对象,用于操作文件。

    FileOutputStream fos = new FileOutputStream("");

    //2.写数据,直接写入到目的地中

    fos.write("lsdkfsd".getBytes());

    //3.关闭资源

    fos.close();

    }

    InputStream is = new FileInputStream("config.properties");

      byte[] buf = new byte[1024];

      int len = 0;

      while(-1 != (len=is.read(buf)))

      {

       String str = new String(buf, 0, len);

       System.out.println(str);

      }

      is.close();


    =============================================================

    //复制一个文件   到目的地

    public static void copy() throws FileNotFoundException, IOException

    {

    FileInputStream fis = new FileInputStream("");

    FileOutputStream fos = new FileOutputStream("");

    byte[] buf = new byte[1024];

    int len=0;

    while((len=fis.read(buf)) != -1)

    {

    fos.write(buf, 0, len);

    }

    fos.close();

    fis.close();

    }

    ------------------------------------------------------------------------------------------------------------------

    /*

     * 读取一个键盘录入数据,  并打印在控制台上。

     * 

     * 键盘本身就是一个标准的输入设备。

     * 对于java而言,对于这种输入设备都有对应的对象。

     */

    public class TestIO6

    {

    public static void main(String[] args) throws IOException

    {

    // readKy();

    transStream();

    }

     

    //第二种方式

    //使用字节流向字符流的转换模式   将输入的字符装换成对应的  大写字母

    public static void transStream() throws IOException

    {

    InputStream in = System.in;

    //将字节流转换成字符流的桥梁

    InputStreamReader isr = new InputStreamReader(in);

    //字符流

    BufferedReader bufr = new BufferedReader(isr);

    String line = null;

    while((line=bufr.readLine()) != null)

    {

    if("over".equals(line))break;

    System.out.println(line.toUpperCase());

    }

    }

    //第一种方式

    public static void readKy() throws IOException

    {

    InputStream in = System.in;

    int ch = in.read();

    System.out.println(ch);

    }

    }

     




    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    (离线算法 LCA) hdu 2874
    (树形DP) hdu 4118
    (树的重心) poj 1655
    (线性基) bzoj 2115
    (线性基) bzoj 2460
    (边双联通+树直径) hdu 4612
    (拓扑图+DP) poj 3249
    (求割点和除去割点后的联通块数目) poj 1523
    (边双联通) poj 3352
    (DP求最长路) hdu 4607
  • 原文地址:https://www.cnblogs.com/blogs-chao/p/4764932.html
Copyright © 2011-2022 走看看