我们在测试项目中经常会遇到这样的情形:

1. 从文件或网络得到一个InputStream,需要转换成String赋值到别的变量做为另一个方法的入参。

2. 从文件或网络得到一个InputStream后,需要查看得到的InputStream是不是我们所需要的。

下面主要分析如何使用Scanner来处理。

从 JDK 5.0 开始,基本类库中增加了java.util.Scanner类,使用它的Scanner(InputStream source)构造方法,可以传入InputStream,通过它提供的next()方法;查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,默认使用空格作为分割符来分隔文本,可以自定义分隔符。

下面是一个简单的例子:

从文件c:/test.txt读取输入流,传入scanner对象,通过next(方法)查找字符串文本,然后打印字符串文本。这样我们就成功的完成了转换。

     public static void main(String[] args) throws IOException {

         InputStream inputStream = new FileInputStream("c:/test.txt");
Scanner scanner = new Scanner(inputStream, "UTF-8");
String sc = scanner.next();
System.out.println(sc);
scanner.close();
}

上面代码是默认使用空格作为分割符来分隔文本,也可以自己定义分隔符,比如我们用逗号“,”作为分隔符。那么输入流中逗号以后的内容都不会传给sc了。

public static void main(String[] args) throws IOException {

        InputStream inputStream = new FileInputStream("c:/test.txt");
Scanner scanner = new Scanner(inputStream, "UTF-8");
String sc = scanner.useDelimiter(",").next();
System.out.println(sc);
scanner.close();
}

下面将知识拓展一下,

以上的输入流是来自文件,那么要是输入流来自console呢?

    public static void main(String[] args) throws IOException {

        Scanner scanner = new Scanner(System.in, "UTF-8");
String sc = scanner.useDelimiter(",").next();
System.out.println(sc);
scanner.close();
}

输入abc edf wefw,weew,few

输出:abc edf wefw

我们可以看到逗号的文本都没有打印,这是因为next() 方法遇见第一个有效字符(非空格,换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描。

我们再来看看nextLine()方法,nextline()是以回车作为结束标志,它是可以得到带空格的字符串的.

    public static void main(String[] args) throws IOException {

        Scanner scanner = new Scanner(System.in, "UTF-8");
String sc = scanner.useDelimiter(",").nextLine();
System.out.println(sc);
scanner.close();
}

输入abc edf wefw,weew,few

输出abc edf wefw,weew,few

需要注意的是,如果输入流是文件,那么nextLine()方法将只返回文件的第一行。

使用Scanner将InputStream类型转换成String的更多相关文章

  1. Java 把 InputStream 转换成 String 的几种方法

    我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...

  2. Java 里把 InputStream 转换成 String 的几种方法

    我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...

  3. oracle Clob类型转换成String类型

    转载:https://www.cnblogs.com/itmyhome/p/4131339.html Clob类型转换成String类型 oracle中表结构如下: create table GRID ...

  4. Clob类型转换成String类型

    oracle中表结构如下: create table GRID_RESOURCE ( ID VARCHAR2(50), CNNAME VARCHAR2(50), TYPE VARCHAR2(50), ...

  5. oracle.sql.Clob类型转换成String类型

    方法一: public String ClobToString(Clob clob) throws SQLException, IOException { String reString = &quo ...

  6. 如何将Object类型转换成String类型

    1. Object.toString() obj.toString() 注意:必须保证Object不是null值,否则将抛出NullPointerException异常. 2. (String)Obj ...

  7. int类型转换成String , 不足n位 在前面补0

    1.String.format("%02d", 5);-->结果:05 0代表前面要补的字符 2代表字符串长度 d表示参数为整数类型 2.秒转换成时分秒 private St ...

  8. Java中Clob类型转换成String类型的问题

    1.问题: 项目中使用druid+达梦数据库(基本类似Oracle),查出的Clob类型数据在运行时为ClobProxyImpl对象而不是内容,不能转为字符串 2.原代码: map为达梦数据库或Ora ...

  9. Java,double类型转换成String,String装换成double型

    今天,老师布置了小系统,银行用户管理系统,突然发现自己的基础知识好薄弱,就把这些记录一下, double类型转化string:Double.toString(double doub); String类 ...

随机推荐

  1. HttpClient 入门教程学习

    HttpClient简介 HttpClient是基于HttpCore的HTTP/1.1兼容的HTTP代理实现. 它还为客户端认证,HTTP状态管理和HTTP连接管理提供可重用组件. HttpCompo ...

  2. sql:查询创建表的结构

    --显示所有用户表: --1 SELECT SCHEMA_NAME(schema_id) As SchemaName , name As TableName from sys.tables ORDER ...

  3. js数组与字符串处理 slice、splice、substring、substr、push、pop、shift、reverse、sort、join、split

    数组 方法 1.在数组末尾添加.删除元素 push()方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度.改变原数组 pop()方法则从数组末尾移除最后一个元素,减少数组的 ...

  4. <Android Framework 之路>BootAnimation(2)

    前言 上一篇主要讲解了BootAnimation是从何而来,如何启动,从开机,到SurfaceFlinger服务起来,然后到执行开机动画,如果要深入的看里面的代码,是需要花一定的时间的,我们旨在了解大 ...

  5. 02_dubbo的SPI

    [dubbo为什么不采用JDK自带的SPI] 1.JDK自带的SPI(ServiceLoader)会一次性实例化扩展点所有实现,基本只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果我 ...

  6. SQL Server ->> Computed Column(计算列)

    Computed Column(计算列)是自SQL Server 2005开始就有的特性.计算列的定义是一个表达式.表达式可以是非计算列,常量,函数间的组合.但是不可以是子查询. 计算列数据固化 默认 ...

  7. 绘制播放音乐时的音波图形的View

    绘制播放音乐时的音波图形的View 这个效果类似于这个哦: 效果如下: 源码: MusicView.h 与 MusicView.m // // MusicView.h // Music // // C ...

  8. Python初学者第七天 字符串及简单操作

    7day 数据类型:字符串 1.定义 字符串是一个有序的字符的集合,用于储存和表示基本的文本信息.单.双.三引号之间的内容称之为字符串: a = ‘hello world!’ b = "你好 ...

  9. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  10. Python学习---模版/包的概念

    1.1. 模块/包的概念 在Python中,一个.py文件就称之为一个模块(Module) 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块的使用:模块是用来组织函数的 解释器 ...