Java输入输出流进阶
输入输出的内容是文本内容,考虑使用字符流。
输入输出的内容是二进制内容,考虑使用字节流。
凡是能用记事本打开并查看的内容称为文本文件,反之则为二进制文件。
package ch15;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
/**
* Created by Jiqing on 2016/12/30.
*/
public class StringNodeTest {
public static void main(String[] args) throws IOException{
String src = "从明天起,做一个幸福的人\n"
+ "喂马,劈柴,周游世界\n"
+ "从明天起,关心粮食和蔬菜\n"
+ "我有一所房子,面朝大海,春暖花开\n";
char[] buffer = new char[32];
int hasRead = 0;
try(StringReader sr = new StringReader(src)) {
// 采用循环读取的方式读取字符串
while ((hasRead = sr.read(buffer)) > 0) {
System.out.print(new String(buffer,0,hasRead));
}
}
try (
// 创建StringWriter
StringWriter sw = new StringWriter()) {
sw.write("有一个美丽的新世界,\n");
sw.write("她在远方等我!\n");
System.out.print(sw.toString());
}
}
}

敲代码的时候,可以把代码区域拎出来,简洁明了。
转换流
InputStreamReader将字节输入流转为字符输入流,OutputStreamWriter将字节输出流转化为字符输出流。
package ch15;
import ch4.While;
import java.io.*;
/**
* Created by Jiqing on 2016/12/30.
*/
public class KeyinTest {
public static void main(String[] args) {
try(
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader)) {
String line = null;
while ((line = br.readLine()) != null)
{
if (line.equals("exit")) {
System.exit(1);
}
System.out.println("输入内容为:" + line);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}

推回输入流
PushbackInputStream和PushbackReader,将字节字符推回缓冲区,允许重复读取刚刚读取的内容。
标准输入、输出
System.in System.out默认情况下分别代表键盘和显示器。
方法论:先看一遍,了解思路大概。尝试自己不看代码,写出来。那才是真正属于自己的知识。
package ch15;
import java.io.*;
/**
* Created by Jiqing on 2016/12/30.
*/
public class RedirectOut {
public static void main(String[] args) {
try(
PrintStream ps = new PrintStream(new FileOutputStream("out.txt"))) {
System.setOut(ps);
System.out.print("普通字符串");
System.out.print(new RedirectOut());
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
方法论:如果一时半会达不到自己独立写出来,那就重复重复再重复。书读百遍,其义自见。
上边的重定向,将内容写入了out.txt文档中了。而没有输出到显示器。
package ch15;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
/**
* Created by Jiqing on 2016/12/30.
*/
public class RedirectIn {
public static void main(String[] args) {
File file = new File(".");
try(FileInputStream fis = new FileInputStream(file.getAbsoluteFile().getParent()+"/src/ch15/RedirectIn.java")) {
System.setIn(fis);
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\n");
while(sc.hasNext()) {
System.out.println("键盘输入的内容是:"+sc.next());
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
方法论:编程在于敲代码,感受代码。手感很重要。一方面能够增强信心,一方面能够增加记忆与乐趣。但是也没必要很死板,统统都敲一遍。挑一些代表性的,感受一下就行了。

读取进程数据
package ch15;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Created by Jiqing on 2016/12/30.
*/
public class ReadFromProcess {
public static void main(String[] args) throws IOException{
Process p = Runtime.getRuntime().exec("javac");
try(
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream(),"gbk"))
) {
String buff = null;
while ((buff = br.readLine()) != null) {
System.out.println(new String(buff));
}
}
}
}

Java输入输出流进阶的更多相关文章
- Java输入/输出流体系
在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...
- 深入理解Java输入输出流
Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概念呢?可以 ...
- Java 输入输出流 转载
转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...
- Java输入输出流(一)——常用的输入输出流
1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...
- java 输入输出流1 FileInputStrem&&FileOutStream
通过文件输入流读取问价 package unit6; import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...
- java输入输出流总结 转载
一.基本概念 1.1 什么是IO? IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是 ...
- java输入输出流(内容练习)
1,编写一个程序,读取文件test.txt的内容并在控制台输出.如果源文件不存在,则显示相应的错误信息. package src; import java.io.File; import java.i ...
- Java输入输出流(转载)
转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...
- 转 Java输入输出流详解(非常详尽)
转 http://blog.csdn.net/zsw12013/article/details/6534619 通过数据流.序列化和文件系统提供系统输入和输出. Java把这些不同来源和目标的数据都 ...
随机推荐
- Android Activity 切换动画(非原创)
在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity ...
- Javascript模块化编程(三):require.js的用法(转)
这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...
- Notepad++自动刷新文本
现在的日志信息往往都是打印在硬盘上,而不是保存到线上,所以我们常常会使用notepad++来查看硬盘上的文本文件 这时往往会出现两个问题 (1)在notepad++长时间最小化后,再次打开会提示是否下 ...
- Azure VM上传小文件
因为需要传一些脚本到Azure的VM里,有个简单方法可以实现,如下 编辑这个rdp文件 点击确定,连接远程计算机 可以在我的电脑里看到本地硬盘
- nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题
公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...
- ORACLE工作原理小结
ORACLE工作原理1-连接 我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址 ...
- django和apache交互的wsgi分析
很多django程序员会用django进行web程序的开发,会用django的命令行命令进行程序的调试,但不会将simpleserver换成apache的配置,也有很多django程序员知道怎么用ws ...
- java第四次作业
(一)一个字节 import java.io.*; /** * 实现文件复制 * @author Administrator * */public class CopyFile { public st ...
- .net(C#)中结构和类的区别
static void Main(string[] args) { //类型 //结构:值类型 //类:引用类型 //声明的语法:class struct //在类中,构造函数里,既可以给字段赋值,也 ...
- JavaScript confirm 自定义风格及功能实现
在网上找了一些弹窗插件,例如bootbox, 功能和动画效果都做的很好,但是很难自定义样式. 项目需要,Google相关方法后写了一个Demo, 没有JavaScript confirm切断线程的功能 ...