为了账号安全,请及时绑定邮箱和手机立即绑定

Java ,如何用标准的输入输出流重定向到一个文件

标签:
Java

最近,在学习Java,并且学习到了Java的IO(输入与输入),什么是Java IO呢?
 IO流位于java.io包中,根据操作数据不同,分为字节流和字符流;根据数据输入方面的不同又可分为输入流和输出流,无论是何种流,最终都依赖于操作系统。
一、字节流:
1、字节流,主要用于图片、音频、视频的传输,以二进制的形式进行,分为字节输入流和字节输出流;字节流操作的是字节数组;字符流操作的是字符数组。
2、字节输入与字节输出流的继承体系图

InputStream 常用方法
方法声明
功能描述
int read()
从输入流读取一个8位的字节,把它转换为0-255之间的整数,并返回这一整数
int read(byte[] b)
从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取的字节数
int read(byte[] b,int off,len)
从输入流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节
void close()
关闭此输入流并释放与该流关联的所有系统资源

OutputStream 常用方法
方法声明
功能描述
void write(int b)
向输出流写入一个字节
void write(byte[]  b)
把参数b指定的字节数组的所有字节写到输出流
void write(byte[] b,int off,len)
将指定byte数组中从偏移量off开始的len个字节写入输出流
void flush()
刷新此输出流并强制写出所有缓冲的输出字节
void close()
关闭此输出流并释放与该流关联的所有系统资源

字节流读写文件:
  FileInputStream 是操作文件的的字节输入流,专门用于读取文件中的数据。
  FileOutputStream是操作文件的的字节输出流,专门用于把数据写入文件。

其代码如下:

package Redirecting;import java.io.*;public class Redirecting {    public static void main(String[] args) throws IOException {        PrintStream console = System.out;        BufferedInputStream in = new BufferedInputStream(new FileInputStream("/Users/mac/IdeaProjects/JF_Java_EDU/src/Redirecting/Redirecting.java"));        PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("outtest.txt")));        System.setIn(in);        System.setOut(out);        System.setErr(out);        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        String s;        while ((s = br.readLine()) != null)            System.out.println(s);                out.println(s);        out.close();        System.setOut(console);    }}

FileReader 和FileWriter 用于读写文件;BufferedReader 和BufferdeWriter是具有缓冲功能的流,可以提高读写效率。

BufferedReader中有一重要的方法readLind(),该方法用于一次读取一行文本。

转换流是一种字符流,只能实现字节流读写文本数据的时候,通过转换流来使用字符高效流的方法。而不能实现图片、音频等数据的读写。
InputStreamReader:理解上是字节流通向字符流的桥梁,使用上为:
 BufferedReader  br = new BufferedReader(new InputStreamReader(System.in));
OutputStreamWriter:理解上是字符流通向字节流的桥梁,使用上还是通过字节流转成字符流:
BufferedWriter  bw = new BufferedWriter (new OutputStreamWriter(System.out));



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消