java IO流简单操作

控制台输入

  1. 我们可以将System.in包装在一个 BufferedReader 对象来实现控制台输入
//控制台IO流,我们使用BufferedReader封装InputStreamReader来实现,或者也可以使用Scanner来实现
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.*;
public class IO {
public static void main(String[] args) throws IOException {
	System.out.println("我擦");
	BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));//java5之后可以直接使用Scanner来获取控制台输入
	System.out.println(bReader.readLine());//readLine()是读完,read()是一个字符一个字符读(可以设置读取结束标志)
}
}
//注意IO输入输出流一定要有try IOException或者主函数上加throws IOException

2.jdk5以后我们可以使用Scanner类来实现控制台输入

import java.util.Scanner;
public class KongZhiTaiShuRu {
public static void main(String[] args) {
	Scanner input=new Scanner(System.in);
	System.out.println("输入int:");
	double age=input.nextDouble();
	System.out.println("age:"+age);
	}
}

文件输入输出

1.基本的读写操作,使用FileOutputStream和FileInputStream(代码来源)Stream表示字节流输入输出一次读入或读出是8位二进制

//FileOutputStream和FileInputStream对具体文件的读写操作
import java.io.*;
public class IO1 {
public static void main(String[] args) {
	try {
        byte bWrite[] = { 11, 21, 3, 40, 5 };
        OutputStream os = new FileOutputStream("test.txt");//这个文件是用来输出的
        for (int x = 0; x < bWrite.length; x++) {
            os.write(bWrite[x]); // writes the bytes
        }
        os.close();

        InputStream is = new FileInputStream("test.txt");//这个文件使用来读取的
        int size = is.available();
        System.out.println("size:"+size);
        for (int i = 0; i < size; i++) {
            System.out.print((char) is.read() + "  ");
        }
        is.close();
    } catch (IOException e) {//这里这个e无所谓
        System.out.print("Exception");
    }
}
}
//注意IO输入输出流一定要有try IOException或者主函数上加throws IOException
  1. 可以定义具体的writer和reader对象,来控制输出格式和防止乱码(代码来源)后缀是Reader,Writer是字符流一次读入或读出是16位二进制
import java.io.*;
 
public class IO3{
    public static void main(String[] args) throws IOException {
 
        File f = new File("a.txt");
        OutputStream fop = new FileOutputStream(f);
        // 构建FileOutputStream对象,文件不存在会自动新建
 
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
 
        writer.append("中文输入");
        // 写入到缓冲区
 
        writer.append("\r\n");
        // 换行
 
        writer.append("English");
        // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
 
        writer.close();
        // 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
 
        fop.close();
        // 关闭输出流,释放系统资源
 
        InputStream fip = new FileInputStream(f);
        // 构建FileInputStream对象
 
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 构建InputStreamReader对象,编码与写入相同
 
        StringBuffer sb = new StringBuffer();
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 转成char加到StringBuffer对象中
        }
        System.out.println(sb.toString());
        reader.close();
        // 关闭读取流
        fip.close();
        // 关闭输入流,释放系统资源
    }
}

2.使用BufferedReader和BufferedWriter分别封装InputStreamReader和OutputStreamWriter(字节转化成字符流)来实现读写:
读取:(带缓冲区的处理流、缓冲区的作用的主要目的是:避免每次和硬盘打交道、提高数据访问的效率)

import java.io.*;
public class IO2 {
public static void main(String[] args) throws IOException {
	InputStream f=new FileInputStream("1.txt");
	BufferedReader b=new BufferedReader(new InputStreamReader(f));//
	System.out.println(b.readLine());
	
}
}

写入:

import java.io.*;
public class IO4 {
public static void main(String[] args) throws IOException {
	OutputStream f=new FileOutputStream("1.txt");
	BufferedWriter b=new BufferedWriter(new OutputStreamWriter(f));
	b.write("Hello World!");
	b.close();
	f.close();
}
}

BufferedWriter和BufferedReader的好处:读的和写的都会先进入缓冲区,提升效率。
这篇博客写的很详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值