一、InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类

InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//构造一个指定编码集的InputStreamReader类。参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。 或者    InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出FileInputStream 为InputStream的子类。

主要方法:int read();//读取单个字符。 int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。

(注意这里是手机的路径)

package com.example.pc.httpconnectiontest;import android.os.Environment;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;/*** Created by pc on 2016/4/19.*/
public class InputStreamReaderTest {public static String transReadNoBuf() throws IOException {/*** 没有缓冲区,只能使用read()方法。*///读取字节流
//      InputStream in = System.in;//读取键盘的输入。String extr =  Environment.getExternalStorageDirectory().getPath();File mFolder = new File(extr +"//"+ "demo.txt");if (!mFolder.exists()) {mFolder.mkdir();}InputStream in = new FileInputStream(mFolder);//读取文件的数据。//将字节流向字符流的转换。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节.InputStreamReader isr = new InputStreamReader(in,"UTF-8");//读取char []cha = new char[1024];int len = isr.read(cha);System.out.println(new String(cha, 0, len));String str = new String(cha, 0, len);isr.close();in.close();return str;}public static String transReadByBuf() throws IOException {/*** 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。*///读取字节流
//      InputStream in = System.in;//读取键盘上的数据String extr = Environment.getExternalStorageDirectory().toString();File mFolder = new File(extr +"//"+ "demo.txt");if (!mFolder.exists()) {mFolder.mkdir();}InputStream in = new FileInputStream(mFolder);//读取文件的数据。//将字节流向字符流的转换。InputStreamReader isr = new InputStreamReader(in);//读取//创建字符流缓冲区BufferedReader bufr = new BufferedReader(isr);//缓冲String line = null;while((line = bufr.readLine())!=null){System.out.println(line);}bufr.close();isr.close();in.close();return line;}}

二、OutputStreamWriter类

OutputStreamWriter 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out);//构造一个默认编码集的OutputStreamWriter类

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out,String charsetName);//构造一个指定编码集的OutputStreamWriter类。参数 out对象通过 InputStream out = System.out;获得。//打印到控制台上。或者    InputStream out = new FileoutputStream(String fileName);//输出到文件中。可以看出FileoutputStream 为outputStream的子类。

主要方法:void write(int c);//将单个字符写入。

viod write(String str,int off,int len);//将字符串某部分写入。

void flush();//将该流中的缓冲数据刷到目的地中去。

(注意这里是针对电脑D盘的路径,用手机操做就要写手机的路径)

    public static void transWriteNoBuf() throws IOException {OutputStream out = System.out;//打印到控制台
//      OutputStream out = new FileOutputStream(new File("D:\\demo.txt"));//打印到文件OutputStreamWriter osr = new OutputStreamWriter(out);//输出
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句可以综合到一句。
//      int ch = 97;//a
//      int ch = 20320;//你
//      osr.write(ch);String str = "你好吗?";//你好吗?osr.write(str);osr.flush();osr.close();}public static void transWriteByBuf() throws IOException {
//      OutputStream out = System.out;//打印到控制台。OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。OutputStreamWriter osr = new OutputStreamWriter(out);//输出
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。BufferedWriter bufw = new BufferedWriter(osr);//缓冲
//      int ch = 97;//a
//      int ch = 20320;//你
//      osr.write(ch);String str = "你好吗?\r\n我很好!";//你好吗?bufw.write(str);bufw.flush();bufw.close();}

MainActivity

package com.example.pc.httpconnectiontest;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import java.io.IOException;public class MainActivity extends AppCompatActivity {private String content;private String str_noBuf;private String str_Buf;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);Button button2 = (Button) findViewById(R.id.button2);Button button3 = (Button) findViewById(R.id.button3);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//网络Connection请求方面content = HttpConnectionUtil.getHttpContent("http://www.baidu.com");if (content != null && content != "") {Message message = mhandler.obtainMessage();message.what = 1;message.obj = "";mhandler.sendMessage(message);}}}).start();}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//InputStreamReaderTest nobuftry {str_noBuf = InputStreamReaderTest.transReadNoBuf();Log.d("MainActivity","str_noBuf?");} catch (IOException e) {e.printStackTrace();}if (str_noBuf != null && str_noBuf != "") {Message message = mhandler.obtainMessage();message.what = 2;mhandler.sendMessage(message);}Log.d("MainActivity","str_noBuf=="+str_noBuf);}}).start();}});button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//InputStreamReaderTest nobuftry {str_Buf = InputStreamReaderTest.transReadNoBuf();} catch (IOException e) {e.printStackTrace();}if (str_Buf != null && str_Buf != "") {Message message = mhandler.obtainMessage();message.what = 3;mhandler.sendMessage(message);}}}).start();}});}private Handler mhandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:Toast.makeText(MainActivity.this, content, Toast.LENGTH_LONG).show();Log.d("MainActivity", content);break;case 2:Toast.makeText(MainActivity.this, str_noBuf, Toast.LENGTH_LONG).show();Log.d("MainActivity", str_noBuf);break;case 3:Toast.makeText(MainActivity.this, str_Buf, Toast.LENGTH_LONG).show();Log.d("MainActivity", str_Buf);break;default:break;}}};}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button1"android:id="@+id/button" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button2"android:id="@+id/button2" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button3"android:id="@+id/button3" />
</LinearLayout>

mainifest文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.pc.httpconnectiontest" ><uses-permission android:name="android.permission.INTERNET"/><!--往sdcard中写入数据的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中创建/删除文件的权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/AppTheme.NoActionBar" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

在写这段代码时候用于测试电脑D盘目录的java文件

package com.example.pc.httpconnectiontest;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;/*** Created by pc on 2016/4/19.*/
public class FileTest {public static void main(String [] arges  ) throws IOException {/*  String content = HttpConnectionUtil.getHttpContent("http://www.baidu.com");System.out.print("content =="+content);*/String content ="";/* File file  = new File("D:\\demo.txt");InputStream is = new FileInputStream(file) ;*/InputStream is = new FileInputStream(new File("D:\\demo.txt"));//读取文件的数据。InputStreamReader isr = new InputStreamReader(is,"UTF-8");BufferedReader br = new BufferedReader(isr);String line = "";while((line=br.readLine()) !=null){content+= line;}System.out.println(content);if(br!=null){br.close();}else if (isr!=null){isr.close();}else if (is!=null){is.close();}}
}

demo.txt文件,随便写了几个hello world!

上次的代码HttpConnection

package com.example.pc.httpconnectiontest;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;/*** Created by pc on 2016/4/18.* <p/>* 工具类*/
public class HttpConnectionUtil {public static String getHttpContent(String url) {return getHttpContent(url, "UTF-8");}private static String getHttpContent(String url, String charSet) {HttpURLConnection connection = null;String content = "";try {URL address_url = new URL(url);connection = (HttpURLConnection) address_url.openConnection();connection.setRequestMethod("GET");//设置访问超时时间及读取网页流的超市时间,毫秒值connection.setConnectTimeout(1000);connection.setReadTimeout(1000);//得到访问页面的返回值int response_code = connection.getResponseCode();if(response_code== HttpURLConnection.HTTP_OK){InputStream inputStream = connection.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,charSet));//把字节流读取出来String line = "";while((line = bufferedReader.readLine()) !=null){content+= line;}return  content;}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if (connection!=null){connection.disconnect();}}return "";}/*public static void main(String [] arges  ){String content = HttpConnectionUtil.getHttpContent("http://www.baidu.com");System.out.print("content =="+content);}*/}

对InputStreamReader 和 OutputStreamWriter的理解相关推荐

  1. [十六]JavaIO之InputStreamReader 与 OutputStreamWriter

    简介 InputStreamReader OutputStreamWriter是转换流 InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流. OutputStream ...

  2. Java IO: InputStreamReader和OutputStreamWriter

    转载自  Java IO: InputStreamReader和OutputStreamWriter 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) ...

  3. InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。

     InputStreamReader 和 OutputStreamWriter类使用方法简单介绍. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流. ...

  4. InputStreamReader 和 OutputStreamWriter类用法简介,及演示。

    InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通 ...

  5. InputStreamReader和OutputStreamWriter 的区别和用法

    一.InputStreamReader 用于将一个字节流中的字节解码成字符 , 用法如下 @Testpublic void Test19() throws Exception {InputStream ...

  6. 1.9 Java转换流:InputStreamReader和OutputStreamWriter

    正常情况下,字节流可以对所有的数据进行操作,但是有些时候在处理一些文本时我们要用到字符流,比如,查看文本的中文时就是需要采用字符流更为方便.所以 Java IO 流中提供了两种用于将字节流转换为字符流 ...

  7. 75. InputStreamReader和OutputStreamWriter(转换流--字节流转换成字符流)

    转换流: InputStreamReader   输入字节流转换成输入字符流 OutputStreamWriter  输出字节流转换成输出字符流 总结:就是字节流转换成字符流,但是不能字节流转换成字节 ...

  8. IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)

    1.InputStreamReader 字节流通向字符的桥梁 所有已实现的接口: Closeable, Readable 直接已知子类: FileReader 将字节输入流转换为字符输入流 使用指定的 ...

  9. InputStreamReader和 OutputStreamWriter

    输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥 输出字节流的转换流: OutputStreamWriter   可以把输出字节流转换成输出字符流 . 转换流的作用:   ...

最新文章

  1. 滴滴自动驾驶CEO张博:十年内无人驾驶对消费者没有吸引力丨厚势汽车
  2. Java的标签--弱化的goto
  3. 快速上手linux玩转典型网络,5- 快速上手Linux玩转典型应用- Linux常用命令
  4. rust腐蚀怎么单人游戏_腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程
  5. 最近为A公司提炼的经营理念之合作理念
  6. Git 正在吞噬世界!
  7. c语言编辑学生信息录入的程序,c语言编的学生信息管理系统小程序!!有不足的请指出,谢谢!!...
  8. 【PL/SQL】匿名块、存储过程、函数、触发器
  9. linux中权限减少,Linux中权限管理
  10. 【修复版】ONE兔3.0版本社交社区交友婚恋视频即时通讯双端APP原生源码
  11. 交换机配置常用的命令
  12. python直方图均衡_python 简单图像处理(8) 直方图均衡化
  13. 湖南省计算机二级官网2020,湖南2020年3月计算机二级考试报名时间安排
  14. VTK:图形基本操作进阶——表面重建技术(等值面提取)
  15. 电脑如何进入【安全模式】——杀毒访问清理文件很方便
  16. lol s7 linux,LOLs7 赛季季末冲刺挑战赛参加地址介绍
  17. node搭建web服务器时,图片显示不出来
  18. 设计模式读书笔记汇总
  19. (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)
  20. 2021年流动式起重机司机报名考试及流动式起重机司机最新解析

热门文章

  1. android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法
  2. c语言学习-自定义函数并调用求1-100的累计和
  3. python—auto-py-to-exe—.py文件打包成.exe文件最全最详细(用不同的类别做教程)
  4. OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(1-2)
  5. 如何从Microsoft SQL Server生成C#类
  6. JDK/Java 14 可能带来什么新特性?
  7. C#中的模块化软件开发
  8. 如何使用PowerShell将VS Code扩展导出到另一台计算机
  9. 前端ajax数据提交到服务器_详解前端如何让服务器主动向浏览器推送数据
  10. 怎么看台式计算机是几位的,怎么看电脑是32位还是64位?一目了然