字节、字符输入输出流

  • Post author:
  • Post category:其他




字节和字符输入输出流:



1、字节

输出流:超类OutputStream,对文件的输出流使用子类FileOutputStream,用来写入

输入流:超类InputStrean,对文件的输入流使用子类FileInputStream,用来读取

代码演示:

字节输出流:将文字写入到对应lili.txt文件上

public class Test3 {
    public static void main(String[] args) {
        out();
    }

    private static void out() {
        //输入位置
        File f1 = new File("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
        try {
            OutputStream out = new FileOutputStream(f1, true);//append 为true表示追加内容
            //内容写到文件
            out.write("小河流水哗啦啦".getBytes());
            // 关闭流
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字节输入流:读取lili.txt上的文字:

public class Test3 {
    public static void main(String[] args) {
        input();
    }
    private static void input() {
        File f1 = new File("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
        try {
            InputStream input = new FileInputStream(f1);
            byte[] bytes = new byte[1024];
            StringBuilder stringBuilder = new StringBuilder();
            int len = -1;
            while ((len = input.read(bytes)) != -1) {
                stringBuilder.append(new String(bytes, 0, len));
            }
            System.out.println(stringBuilder);
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



1、字符

字符输出流:Writer,对文件的操作使用子类:FileWriter

字符输入流:Reader,对文件的操作使用子类:FileReader

每次操作的都是一个字符,一般用于读取或写入文字

代码演示:

字符输出流:将文字写入到对应lili.txt文件上

public class Test4 {
    public static void main(String[] args){
        out();
    }
    private static void out(){
        File f1 = new File("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
        try {
            Writer out = new FileWriter(f1,true);
            out.write("我是字符输出流");
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符输入流:读取lili.txt上的文字:

public class Test4 {
    public static void main(String[] args){
        input();
    }
    private static void input(){
        File f1 = new File("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
        try {
            Reader input = new FileReader(f1);
            char[] chars = new char[1];
            StringBuilder builder = new StringBuilder();
            int len = -1;
            while((len = input.read(chars))!=-1){
                builder.append(new String(chars,0,len));
            }
            input.close();
            System.out.println(builder);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


案例

:复制一张图片到桌面上:


分析

:图片传输,我们应该使用字节输入输出流,读取后再输出到桌面上即可


代码实现

public class Test5 {
    public static void main(String[] args) {
        // 将哪里的文件复制到哪里去
        copy("C:\\Users\\qijingjing\\Pictures\\Saved Pictures\\wife\\m5.jpg", "C:\\Users\\qijingjing\\Desktop\\m5.jpg");
    }

    private static void copy(String str, String target) {
        // 需要被复制的文件
        File file1 = new File(str);
        // 复制文件到何地
        File file2 = new File(target);
        InputStream in = null;
        OutputStream out = null;
        try {
            // 创建一个输入流
            in = new FileInputStream(file1);
            // 创建一个输出流
            out = new FileOutputStream(file2);
            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = in.read(bytes)) != -1) {
                // 输入
                out.write(bytes, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    // 关闭流
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    // 关闭流
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}



版权声明:本文为qijing19991210原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。