Java学习之IO流

一,概述:

I指(InputStream)输入流;O指(OutputStream)输出流。两者又因数据单位都是字节。属于字节流。(8位) 

相对Reader(字符输入流);Writer(字符输出流)。属于字符流。(16位)

输入流:就是把数据读入到内存中。读数据

输出流:就是把内存中的数据,输出到其他地方。 写数据

二,OutputStream(字节输出流)

1,构造方法

OutputStream()

代码示例

OutputStream out=new FileOutputStream(f1);//f1为输出的方向

 2,常用方法

voidwrite(int b)  将一个 integer(数组长度)写入此流

 练习:使用输出流,向一文件内输出内容

package Test00.File.Output;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;

public class Test02 {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.txt");
        f1.createNewFile();//创建文件

        OutputStream out=new FileOutputStream(f1);//定义一个输出流,向f1文件输出内容
        Scanner sc=new Scanner(System.in);//定义一个扫描器,输入内容
        System.out.println("请输入:");
        String next = sc.next();
        byte[] bytes = next.getBytes();//获取字符串对应解析后的byte数组,
        out.write(bytes);
    }
}

三,InputStream(字节输入流)

1,构造方法

InputStream()

 代码示例

InputStream in=new FileInputStream(f1);//f1为输入方向

 2,常用方法

read() 从输入流中读取数据的下一个字节。

 方法解释:从输入流中读取数据的下一个字节。返回 0255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞

连续读取单个字节

package Test00.File.inputStream;

import java.io.*;

public class Test02 {
    //字节输入流(不能读汉字)
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.txt");
        InputStream in=new FileInputStream(f1);
//方法一(不推荐)

//        while (true){
//            int n=in.read();
//            if (n!=-1){
//                System.out.println((char) n);
//            }else {
//                break;
//            }
//        }
//方法二(推荐)

        int n;
        while ((n=in.read()) !=-1 ){
            System.out.println((char)n);
        }
    }
}

连续读取多个字节(每个汉字占三个字节)

package Test00.File.inputStream;

import java.io.*;

//字符输入流
public class Test01 {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.txt");
        InputStream in=new FileInputStream(f1);

//        byte[] buffer=new byte[10];
//        while (true){
//            int n=in.read(buffer);
//            if (n!=-1){
//                String s=new String(buffer,0,n);
//                System.out.println(s);
//            }else {
//                break;
//            }
//        }
        
        int n;
        byte[] a=new byte[20];//最大可读20个字符
        while ((n=in.read(a)) !=-1 ){
            String s=new String(a,0,n);
            System.out.println(s);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值