最常用的一个IO控制台输入的

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner; public class io {
public static void main(String[] args) throws IOException {//这里是防止io出现异常提前指定异常
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
//io包的输入相对来说是快捷的,但缺点是只有字符串,如果有其他需要,还需要自己转
Scanner sc = new Scanner(System.in);
String ss = sc.nextLine();
//相对来说Scanner是慢一些的,但Scanner接受的种类比较多
//可以接受int等等其他类型 //对于控制台输入来说
//如果接受大型字符串的还是用io包的比较好,快捷
//对于接受比较多的,或者说接受非字符串的类型来说Scanner比较好用
} }

字符转换输入流:InputStreamReader (字符转换输入流=字节流+编码格式)

构造方法

public InputStreamReader(InputStream in)

创建一个使用默认字符集的 InputStreamReader。

public InputStreamReader(InputStream in,Charset cs)

创建使用给定字符集的 InputStreamReader。

cs - 字符集

常用方法

public int read()throws IOException

读取单个字符。

读取的字符,如果已到达流的末尾,则返回 -1

public int read(char[] cbuf) throws IOException

将字符读入数组。

读取的字符数,如果已到达流的末尾,则返回 -1

public void close() throws IOException

关闭该流并释放与之关联的所有资源。

示例程序

public static void main(String[] args) throws Exception{
InputStreamReader isr = new InputStreamReader(new FileInputStream("osw.txt"),"gbk") ; //读数据
//一次读取一个字符数组
char[] chs = new char[1024] ;
int len = 0 ;
while((len=isr.read(chs))!=-1) {
System.out.println(new String(chs,0,len));
} //关闭资源
isr.close();
}

FileInputStream类

从文件系统中的某个文件中获得输入字节。(继承自InputStream类)

构造方法

public FileInputStream(File file)

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。

public FileInputStream(String name)

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

常用方法

public abstract int read() throws IOException:

一次读取一个字节

返回:下一个数据字节;如果已到达文件末尾,则返回 -1。

public int read(byte[] b) throws IOException:

一次读取一个字节数组 (读取实际的字节数) 指定字节数组的长度是:1024或者1024的倍数

返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

b - 存储读取数据的缓冲区

public void close() throws IOException

关闭此文件输入流并释放与此流有关的所有系统资源。

开发步骤:

1)创建字节文件输入流对象

2)读数据

3)释放资源

示例程序:

public class FileInputStreamDemo {
public void demo() throws Exception{
FileInputStream fis = new FileInputStream("fis.txt") ;
int by = 0 ;
while((by=fis.read())!=-1) {
System.out.print((char)by);
}
//释放资源
fis.close();
}
}

FileWriter字符输出流

构造方法

public FileWriter(String fileName) throws IOException

根据给定的文件名构造一个 FileWriter 对象。

fileName - 一个字符串,表示与系统有关的文件名。

public FileWriter(String fileName,boolean append) throws IOException

根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

fileName - 一个字符串,表示与系统有关的文件名。

append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。

public FileWriter(File file) throws IOException

根据给定的 File 对象构造一个 FileWriter 对象。

file - 要写入数据的 File 对象。

常用方法

public void write(int c):

写单个字符

public void write(char[] cbuf):

写字符数组

public abstract void write(char[] cbuf, int off, int len):

写字符数组的一部分

public void write(String str):

写字符串

public void write(String str,int off, int len):

写字符串的某一部分

public void flush() throws IOException

刷新该流的缓冲。

public void close() throws IOException

关闭此流,但要先刷新它

FileOutputStream类

文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。(OutputSteam的子类)

构造方法

public FileOutputStream(File file) throws FileNotFoundException

创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

public FileOutputStream(File file,boolean append)throws FileNotFoundException

创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新 FileDescriptor 对象来表示此文件连接。

append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处

常用方法

public void write(int b) throws IOException:

一次写一个字节 b- 要写入的字节。

public void write(byte[] b) throws IOException:

一次写一个字节数组

public void write(byte[] b, int off,int len) throws IOException:

一次写一部分字节数组

public void close()throws IOException

关闭此文件输出流并释放与此流有关的所有系统资源。此文件输出流不能再用于写入字节。

开发步骤:

1)创建字节输出流对象

2)写数据

3)关闭资源

程序示例

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

        FileOutputStream fos = new FileOutputStream("fos.txt") ; //FileNotFoundException
// 使用流对象给文件中写入数据
fos.write("hello".getBytes());
//关闭资源
/**
* 1)将文件和流对象不建立关系了 (fos对象不指向fos.txt)
* 2)及时释放掉流对象所占用的内存空间
*/
fos.close();
/**
* 如果关闭流对象了,那么就不能对流对象进行操作了
*/
fos.write("java".getBytes());//java.io.IOException: Stream Closed :流已经关闭了 }
}

Java中输入时IO包与Scanner的区别的更多相关文章

  1. java中最常用jar包的用途说明

    java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ...

  2. Java中net.sf.json包关于JSON与对象互转的问题

    在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...

  3. Java中net.sf.json包关于JSON与对象互转的坑

    在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...

  4. java中4种修饰符访问权限的区别及详解全过程

    java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...

  5. Java中集合List,Map和Set的区别

    Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Ke ...

  6. Java中的“==操作符”和equals方法有什么区别

    Java中的"=="和equals方法究竟有什么区别? 1.==操作符 "=="操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的 ...

  7. java中,return和return null有什么区别吗?

    java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void ...

  8. Java中关键字continue、break和return的区别

    Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break:   跳出循环体,继续执行循环外的函数体 return:   跳出整个函数 ...

  9. Java中Compareable和Comparator两种比较器的区别

    Java中Compareable和Comparator两种比较器的区别 参考原文链接:https://www.cnblogs.com/ldy-blogs/p/8488138.html 1.引言 在ja ...

随机推荐

  1. [hdu5249]动态中位数

    题意:3种操作分别为入队,出队,查询当前队列的中位数.操作数为1e5数量级. 思路:先考虑离线算法,可以离散+线段树,可以划分树,考虑在线算法,则有treap名次树,SBtree(size balan ...

  2. leeCode 278

    你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. 假设你有 n 个版本 [1, ...

  3. HDU 2006 (水)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2006 题目大意:给你几个数,求奇数的乘积和 解题思路: 很水,不需要数组的,一个变量 x 就行 代码: ...

  4. SpringMVC中参数的传递(一)

    前言 1.首先,我们在web.xml里面配置前端控制器DispatcherServlet以及字符编码过滤器(防止中文乱码),配置如下: <?xml version="1.0" ...

  5. app测试、web测试-怎么测?

    app测试 前言 看过许多大神对APP测试的理解,博主总结了一下我们平时测试APP应该注意的一些测试点并结合大神的理解,总结出这篇文章. 一.测试周期 测试周期一般为两周,根据项目情况以及版本质量可适 ...

  6. 第一章 Python 基础

    1. 为什么学习 Python? 答题路线:a.python的优点,b.python的应用领域广 具体: 优点 1.python语法非常优雅,简单易学 2.免费开源 3.跨平台,可以自由移植 4.可扩 ...

  7. day03: copy的总结(20170215)

    import copynames = ["88xiaoming","liuhai","杨东","liuhai",&quo ...

  8. 使用包时,报 xxx.default is not a function

     最近做了一个导出功能,代码如下 import request from 'request-promise-native'; export default class Form { // 导出 @po ...

  9. layui 让弹窗始终居中于屏幕

    前话:今天用 layer.confirm()  弹窗的时候,滚动到页面尾部再弹窗时,发现弹窗还显示在上面,要滚动会上面才能看到. 度娘找了一个获取滚动条位置的方法: function ScollPos ...

  10. 利用SQL语句替换织梦DedeCms数据库内容

    找到 然后把命令放在 执行即可,慎重执行 替换文章标题 UPDATE `dede_archives` SET `title`=replace(title,'我我我','你你你') 替换文章正文 UPD ...