1

package stream;

import static org.junit.Assert.assertNotNull;

import java.io.BufferedReader;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream; import org.junit.jupiter.api.Test; /*
* 1.标准输入输出流
* System.in :标准的输入流,默认从键盘输入
* System.out 标准的输出流,默认从控制台输出
* System类的setIn(InputStream is) / setOut(PrintStream ps)方式重新指定
*
* */ public class OtherStreamTest {
/*
* 方法一:使用Scanner实现,调用next()方法即可
* 方法二:使用System.in实现读入,System.in -> 转换流 -> BufferedReader的readline()
*
* */
@Test
public void test1() {
//得到标准输入流
BufferedReader br = null;
try {
//System.in的流是字节流,所以要转换成字符流
InputStreamReader isr = new InputStreamReader(System.in);
br = new BufferedReader(isr); while(true) {
String data = br.readLine();
if("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)) {
System.out.println("程序结束");
break;
}
String upperString = data.toUpperCase();
System.out.println(upperString);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(br!=null)
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} /*打印流
* 字节输出流printStream
* 字符输出流printWriter
* 提供一系列重载的print()和println()
* */
@Test
public void test2() throws FileNotFoundException {
//文件hello.txt绑定输出流
PrintStream ps = null;
try {
FileOutputStream fos = new FileOutputStream(new File("hello.txt"));
//把标准输出流从 cmd 改为 文件流fos
ps = new PrintStream(fos,true);
if(ps!=null)
System.setOut(ps); for(int i=0;i<255;i++) {
System.out.print((char)i);
if(i%50==0)
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(ps!=null)
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} /*
* 数据流:DataInputStream:套在InputStream和OutputStream上面
* 作用:用于读取或写入基本数据类型的变量或字符串
*
* */
@Test
public void test3() {
DataOutputStream dos = null;
try {
//将内存中的字符串,基本数据类型的变量写到文件中
dos = new DataOutputStream(new FileOutputStream(new File("hello.txt")));
dos.writeUTF("zsben");
dos.flush();
dos.writeInt(23);
dos.writeBoolean(true);
dos.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
if(dos!=null)
dos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

java 标准输入输出流,打印流,数据流的更多相关文章

  1. java 转换流 打印流 数据流

    转换流 InputStreamReader 和 OutputStreamWriter处理流用于将字节流转化成字符流,字符流与字节流之间的桥梁InputStreamReader 的作用是把 InputS ...

  2. Java标准输入输出流的重定向及恢复

    在Java中输入输出数据一般(图形化界面例外)要用到标准输入输出流System.in和System.out,System.in,System.out默认指向控制台,但有时程序从文件中输入数据并将结果输 ...

  3. java 中的打印流

    package cn.zhou; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.F ...

  4. 系统学习 Java IO (十一)----打印流 PrintStream

    目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基 ...

  5. IO流(三)__字节流 标准输入输出流 转换流

    一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static voi ...

  6. Java基础教程——打印流

    打印流 打印流可以把原本输出到控制台的信息输出到文件中.PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: public fi ...

  7. Java标准输入/输出/错误流

    只要使用OutputStream对象就可使用System.out和System.err对象引用.只要可以使用InputStream对象就可以使用System.in对象. System类提供了三个静态设 ...

  8. Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)

    一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...

  9. Java IO(Properties/对象序列化/打印流/commons-io)

    Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...

随机推荐

  1. poj2010 Moo University - Financial Aid 优先队列

    Description Bessie noted that although humans have many universities they can attend, cows have none ...

  2. Autoencoder基本操作及其Tensorflow实现

    最近几个月一直在和几个小伙伴做Deep Learning相关的事情.除了像tensorflow,gpu这些框架或工具之外,最大的收获是思路上的,Neural Network相当富余变化,发挥所想.根据 ...

  3. CPU高速缓存行与内存关系 及并发MESI 协议(转载)

    原文链接 http://www.cnblogs.com/jokerjason/p/9584402.html 先来一个整体图 一. 大致关系: CPU Cache --> 前端总线 FSB (下图 ...

  4. [Linux] 022 RPM 包查询

    1. 查询是否安装 (1) 查询包是否安装 $ rpm -q 包名 选项 释义 -q (query) 查询 (2) 查询所有已安装的 RPM 包 $ rpm -qa 选项 释义 -a (all) 所有 ...

  5. Netty之SubPage级别的内存分配

    SubPage 级别的内存分配: 通过之前的学习我们知道, 如果我们分配一个缓冲区大小远小于page, 则直接在一个page 上进行分配则会造成内存浪费, 所以需要将page 继续进行切分成多个子块进 ...

  6. vue图片预加载

    目的: 图片预加载能够使得用户在浏览后续页面的时候,不会出现图片加载一半导致浏览不流畅的情况. 一.方法一 项目打开的时候要对图片进行预加载,在App.vue里面的beforeCreate添加预加载程 ...

  7. mpvue中的 钩子函数

    经过多次脱坑实验总结如下, 1,页面的A第一次加载会调用mounted钩子函数,onshow, 2,当从a->b,b再返回到a时,a不会触发mounted,而是触发onshow, 3,如果a中存 ...

  8. vuex配置

    import Vue from 'vue' import App from './App.vue' import router from './router' import store from '. ...

  9. 【记录】mysql查询语句对于为null和为空字符串给出特定值处理

    SELECT if(IFNULL(filedName,"指定字符串")="","指定字符串",filedName) '重命名的字符名' FR ...

  10. C Primer Plus 学习 第四章

    字符串与格式化输入/输出 函数 strlen() 关键字 const 利用#define 和 const创建符号常量 #include <stdio.h> #include <str ...