JAVA IO流

文件(File)和IO,流(Stream)

  • Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
  • Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
  • 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
  • Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
  • 但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。

读取控制台输入

Java 的控制台输入由 System.in 完成。

为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。

下面是创建 BufferedReader 的基本语法:

BufferedReader br = new BufferedReader(new 
                      InputStreamReader(System.in));

在这里插入图片描述

字节流(无缓冲)

InputStream 子类 FileInputStream 输入流

OutputStream 子类 FileOutputStream 输出流

public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream(new File("D:\\autumn\\Pictures\\Camera Roll\\1.jpg"));
            fos = new FileOutputStream(new File("D:\\autumn\\Pictures\\Camera Roll\\003.jpg"));

            byte[] bytes = new byte[1024];
            int length = 0;
            try {
                while ((length = fis.read(bytes))!=-1){
                    fos.write(bytes,0,length);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                fos.close();
                fis.close();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }

    }

字节流(缓冲)

new BufferedInputStream( new FileInputStream( new File(“url”) ) ); 输入流带缓冲
new BufferedOutputStream( new FileOutputStream( new File(“url”) ) ); 输出流带缓冲

public static void main(String[] args) {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            bis = new BufferedInputStream(new FileInputStream(new File("D:\\autumn\\Pictures\\Camera Roll\\1.jpg")));
            bos = new BufferedOutputStream(new FileOutputStream(new File("D:\\autumn\\Pictures\\Camera Roll\\2.jpg")));

            byte[] bytes = new byte[1024];

            int length = 0;
            try {
                while ((length = bis.read(bytes))!=-1){
                    bos.write(bytes,0,length);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            try {
                bis.close();
                bos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

字符流

new BufferedReader(new FileReader(new File(“url”))); BufferedReader是Read的子类—>输入流
new BufferedWriter(new FileWriter(new File(“url”))); BufferedWriter是Writer的子类—>输出流

public static void main(String[] args) {
        BufferedReader br = null;
        BufferedWriter bw = null;

        try {
            br = new BufferedReader(new FileReader(new File("D:\\autumn\\Pictures\\Camera Roll\\1.txt")));
            bw = new BufferedWriter(new FileWriter(new File("D:\\autumn\\Pictures\\Camera Roll\\2.txt")));

            String str = null;
            while ((str=br.readLine())!=null){
                bw.write(str);
                bw.newLine();
            }
            bw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

字节流转字符流

new BufferedReader(new InputStreamReader(System.in)); 字节流转字符流,System.in控制台输入

 public static void main(String[] args) {
        BufferedReader br = null;
        BufferedWriter bw = null;

        try {
            br = new BufferedReader(new InputStreamReader(System.in));
            bw = new BufferedWriter(new FileWriter(new File("D:\\autumn\\Pictures\\Camera Roll\\001.txt")));

            String str = null;
            while ((str=br.readLine())!=null){
                if (str.equals("end")){
                    break;
                }
                bw.write(str);
                bw.newLine();
            }
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

获取系统编码

public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值