Java输入/输出流体系
在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘
Java输入/输出流体系
1.字节流和字符流
字节流:按字节读取。字符流:按字符读取。
字符流读取方便,字节流功能强大,当不能用字符流时,可以用字节流。
字节流基类:InputStream、OutputStream
InputStream方法:

OutputStream方法:

字符流基类:Reader、Writer
Reader方法:

Writer方法:

2.输入输出流体系

3.转换流
InputStreamReader:字节输入流->字符输入流的转换
OutputStreamWriter:字节输出流->字符输出流的转换
例如:字节输入流->字符输入流的转换
字节流使用不方便,而普通的Reader读取也不太方便,转换成BufferReader,利用BufferReader的readLine(),一次读取一行。
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String result = "";
String line = "";
while((line = reader.readLine())!= null){
result = result+ line;
}
System.out.println(result);
InputStream to String:
private static String changeInputeStream(InputStream inputStream,String encode) {
//通常叫做内存流,写在内存中的
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] data = new byte[];
int len = ;
String result = "";
if(inputStream != null){
try {
while((len = inputStream.read(data))!=-){
outputStream.write(data, , len);
}
//result是在服务器端设置的doPost函数中的
result = new String(outputStream.toByteArray(),encode);
outputStream.flush();
outputStream.close();
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
InputStream->StringBuffer:
StringBuffer buffer = new StringBuffer();
InputStreamReader reader =new InputStreamReader(request.getInputStream(),"utf-8");
char[] requestchar = new char[];
if(reader != null){
System.out.println("默认编码:"+reader.getEncoding());//默认编码:UTF8
}
//buffer reader.readLine()
while((temp = reader.read(requestchar))!=-){
buffer.append(requestchar, , temp);
System.out.println(buffer.toString());
}
String result = buffer.toString();
4.文件读写:
class Kaoshi
{public static void main(String[] args){
Scanner in=new Scanner(System.in);
int score=; //分数;
StringBuffer answer=new StringBuffer();//存放用户答案,动态字符串;
String result="ACDD"; //正确答案;
try{
FileReader file=new FileReader("Test.txt"); //打开文件;
BufferedReader intw=new BufferedReader(file); //缓冲流,按行读;
String s=null;
while((s=intw.readLine())!=null){ //判断不为空;
if(!s.startsWith("*")){
System.out.println(s);
}
else{
System.out.println("请输入正确答案:");
String str=in.next();
char c= str.charAt();//收集答案;
answer.append(c);
}
} }catch(IOException e){
e.printStackTrace();
}
for(int i=;i<result.length();i++){
if(result.charAt(i)==answer.charAt(i)||
result.charAt(i)==answer.charAt(i)-){
score+=;
} }
System.out.println(score);
}
}
Java输入/输出流体系的更多相关文章
- 深入理解Java输入输出流
Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概念呢?可以 ...
- Java 输入输出流 转载
转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...
- java输入输出流总结 转载
一.基本概念 1.1 什么是IO? IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是 ...
- Java输入输出流(转载)
转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...
- Java 输入输出流 (七)
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...
- Java基础学习总结(47)——JAVA输入输出流再回忆
一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了 ...
- Java输入输出流(一)——常用的输入输出流
1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...
- java 输入输出流1 FileInputStrem&&FileOutStream
通过文件输入流读取问价 package unit6; import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...
- java输入输出流(内容练习)
1,编写一个程序,读取文件test.txt的内容并在控制台输出.如果源文件不存在,则显示相应的错误信息. package src; import java.io.File; import java.i ...
随机推荐
- JavaScript可否多线程? 深入理解JavaScript定时机制
JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( ...
- jQuery Ajax上传文件
JS代码: //保存 function btnAdd() { var formData = new FormData($("#frm")[0]); $.ajax({ url: &q ...
- JS弹出框插件zDialog再次封装
zDialog插件网址:http://www.jq22.com/jquery-info2426 再次封装zDialog的代码: (function ($) { $.extend({ iDialog: ...
- UML - 类图
在UML类图中,有以下几种常见关系: 泛化 - Generalization "is-a",继承关系,表示一般与特殊的关系: 子类(接口)特化父类(接口)的所有特征和行为,是对象之 ...
- 损失函数(Loss Function) -1
http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf Loss Function 损失函数 ...
- XMPP客户端开发(1)--连接和登录
Smack可用于XMPP客户端的开发,下载Smack,将相关jar文件导入后,即可以开始XMPP客户端的开发. 以下代码实现了客户端连接Tigase服务器,并根据用户名和密码登录. package X ...
- [moka同学笔记]二、Yii2.0课程笔记(魏曦老师教程)
一.在标签tags的model中 //使用正则表达式,把标签字符串转换成数组 public static function string2array($tags) { return preg_spli ...
- spring入门(二)【加载properties文件】
在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...
- selenium webdriver自动化对日期控件的处理
用JS去掉日期输入框的readOnly属性. 代码如下: ----------------------------------------------------------------------- ...
- hibernate(四)__由表逆向创建Domain对象和对象关系映射文件
之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...