在用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输入/输出流体系的更多相关文章

  1. 深入理解Java输入输出流

    Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概念呢?可以 ...

  2. Java 输入输出流 转载

    转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...

  3. java输入输出流总结 转载

    一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是 ...

  4. Java输入输出流(转载)

    转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...

  5. Java 输入输出流 (七)

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  6. Java基础学习总结(47)——JAVA输入输出流再回忆

    一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了 ...

  7. Java输入输出流(一)——常用的输入输出流

    1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...

  8. java 输入输出流1 FileInputStrem&&FileOutStream

    通过文件输入流读取问价 package unit6; import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...

  9. java输入输出流(内容练习)

    1,编写一个程序,读取文件test.txt的内容并在控制台输出.如果源文件不存在,则显示相应的错误信息. package src; import java.io.File; import java.i ...

随机推荐

  1. 浏览器桌面通知Notification探究

    首先说明,这篇博文不是科普讲解的,而是立flag研究的,是关于浏览器消息自动推送,就是下面这个玩意: 最近常常在浏览器看到这样的消息推送,还有QQ.com的推送,现在我对这个不了解,不知道叫消息自动推 ...

  2. VUE 表单元素双向绑定总结

    checkbox最基本用法: <input type="checkbox" v-model="inputdata" checked/> <in ...

  3. 【转】 CSS3实现10种Loading效果

    昨晚用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… PS:如需转载,请注明出处! 第1种效果: 代码如下: <div class="l ...

  4. WinForm菜单和工具栏

    菜单和工具栏: 1.MenuStrip - 顶部菜单栏分割线:1输入- 2.右键插入 |SpearTOR 快捷键设置:每一个项右键属性的最下面可以设置快捷键不管选项隐藏还是菜单隐藏,快捷键都管用 2. ...

  5. C#系统缓存全解析(转载)

    C#系统缓存全解析 对各种缓存的应用场景和方法做了很详尽的解读,这里推荐一下 转载地址:http://blog.csdn.net/wyxhd2008/article/details/8076105

  6. 组件Newtonsoft.Json实现object2json转换

    很多情况下,我们需要把数据类型做一些转换,供其它外部的子系统调用. 最为典型的是生成json格式供javascript作调用. 现成的组件Newtonsoft.Json可以实现object2json之 ...

  7. MySQL Workbench 修改快捷键

    在安装根目录查到\data\main_menu.xml这个文件 例如,修改执行sql语句的快捷键为F5 <value type="object" struct-name=&q ...

  8. PDF解析帮助类

    public class ComPDFHepler { /// <summary> /// 正则获取字符串中两个字符串间的内容 /// </summary> /// <p ...

  9. ListActivity的CheckBox点击事件

    在一个ListActivity中,可能有很多行,如何在某个动作(如点击某个按钮)时判断哪些行的CheckBox被选中了,哪些行的CheckBox没有被选中,这是一个需要解决的问题. 首先,需要让Bas ...

  10. 【Java每日一题】20161201

    20161130问题解析请点击今日问题下方的"[Java每日一题]20161201"查看 package Dec2016; public class Ques1201 { publ ...