字节、字符输入输出流

简介: 字节、字符输入输出流

字节和字符输入输出流:

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();
                }
            }
        }
    }
}


目录
相关文章
|
存储 Java
字节缓冲流
字节缓冲流
|
6月前
|
移动开发 Java Linux
IO流:字节输出流FileOutputStream的超详细用法
IO流:字节输出流FileOutputStream的超详细用法
|
自然语言处理
转换流,字节字符的转换
转换流,字节字符的转换
|
C语言 C++ 开发者
C++输入流和输出流介绍
C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案: 使用 scanf()、gets() 等函数从键盘读取数据,使用 printf()、puts() 等函数向屏幕上输出数据; 使用 fscanf()、fgets() 等函数读取文件中的数据,使用 fprintf()、fputs() 等函数向文件中写入数据。 要知道,C 语言的这套 I/O 解决方案也适用于 C++ 程序,但 C++ 并没有“偷懒”,它自己独立开发了一套全新的 I/O 解决方案,其中就包含
|
存储 Java
字符输入流
字符输入流
|
Java
Java IO流之访问文件的字节输入流FileInputStream和字节输入流FileOutputStream的详解
Java IO流之访问文件的字节输入流FileInputStream和字节输入流FileOutputStream的详解
99 0
缓冲流与打印流(字节与字符)
缓冲流与打印流(字节与字符)
62 0