Java II:2.1、输入与输出流InputStream/OutputStream(API)

40 篇文章 0 订阅
17 篇文章 0 订阅

 2.1、输入与输出流

package xyz.jangle.javabase.n2.b1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 *  2.1、输入输出流
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2021年2月10日 下午2:44:10
 * 
 */
public class M {

	public static void main(String[] args) throws IOException {
		
		Path path = Paths.get("这里是文件的路径");
		Path pathOut = Paths.get("这里是输出文件的路径");
		InputStream in = Files.newInputStream(path);
		// 1、从数据中读取1个字节,并返回该字节。 ps:方法碰到流结尾时返回-1。
		int readByte = in.read();
		// 2、从数据中读取100个字节(readBytes.length字节),返回实际读入的字节数。
		//(ps:若文件实际只有50字节,则返回50。若实际有150字节,则只读入100字节,返回100。
		byte[] readBytes = new byte[100];
		int returnNum = in.read(readBytes);
		// 3、通常,上述方法这样使用: in.availabel() 方法返回在不阻塞的情况下可获取的字节数
		byte[] readBytes2 = new byte[in.available()];
		int returnNum2 = in.read(readBytes2);
		// 4、如果未阻塞(read),则读入10字节,读入的值将放置readBytes2的off开始位置。
		// 返回实际读入的字节数,或者结尾时返回-1。
		int size = 0;
		int off = 0;
		for(;;) {
			size = in.read(readBytes2, off, 10);
			if(size == -1)break;
			off += size;
		}
		// *5、产生一个数组,包含可以从当前流中读入的所有字节。
		byte[] readAllBytes = in.readAllBytes();
		// *6、将当前输入流中的所有字节传送到给定的输出流,返回传递的字节数。
		OutputStream out = Files.newOutputStream(pathOut);
		in.transferTo(out);
		
		// 1、查看这个流是否支持标记功能
		boolean markSupported = in.markSupported();
		int readlimit = 10;
		// 2、在流的当前readlimit位置打一个标记
		in.mark(readlimit);
		// 3、返回到最后一个标记
		in.reset();
		
		// 1、写出一个字节的数据
		int n =in.read();
		out.write(n);
		// 2、从数组b中,写出b.length字节的数据到输出流中。
		byte[] b = in.readAllBytes();
		out.write(b);
		out.write(b, 0, b.length);
		
		// last、注意关闭流
		in.close();
		// 冲刷输出流
		out.flush();
		out.close();
		

	}

}

        Path path = Paths.get("这里是文件的路径");
        Path pathOut = Paths.get("这里是输出文件的路径");
        InputStream in = Files.newInputStream(path);
        // 1、从数据中读取1个字节,并返回该字节。 ps:方法碰到流结尾时返回-1。
        int readByte = in.read();
        // 2、从数据中读取100个字节(readBytes.length字节),返回实际读入的字节数。
        //(ps:若文件实际只有50字节,则返回50。若实际有150字节,则只读入100字节,返回100。
        byte[] readBytes = new byte[100];
        int returnNum = in.read(readBytes);
        // 3、通常,上述方法这样使用: in.availabel() 方法返回在不阻塞的情况下可获取的字节数
        byte[] readBytes2 = new byte[in.available()];
        int returnNum2 = in.read(readBytes2);
        // 4、如果未阻塞(read),则读入10字节,读入的值将放置readBytes2的off开始位置。
        // 返回实际读入的字节数,或者结尾时返回-1。
        int size = 0;
        int off = 0;
        for(;;) {
            size = in.read(readBytes2, off, 10);
            if(size == -1)break;
            off += size;
        }
        // *5、产生一个数组,包含可以从当前流中读入的所有字节。
        byte[] readAllBytes = in.readAllBytes();
        // *6、将当前输入流中的所有字节传送到给定的输出流,返回传递的字节数。
        OutputStream out = Files.newOutputStream(pathOut);
        in.transferTo(out);
        
        // 1、查看这个流是否支持标记功能
        boolean markSupported = in.markSupported();
        int readlimit = 10;
        // 2、在流的当前readlimit位置打一个标记
        in.mark(readlimit);
        // 3、返回到最后一个标记
        in.reset();
        
        // 1、写出一个字节的数据
        int n =in.read();
        out.write(n);
        // 2、从数组b中,写出b.length字节的数据到输出流中。
        byte[] b = in.readAllBytes();
        out.write(b);
        out.write(b, 0, b.length);
        
        // last、注意关闭流
        in.close();
        // 冲刷输出流
        out.flush();
        out.close();

 

 

组合输入/输出流:https://blog.csdn.net/Bof_jangle/article/details/113789326

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值