java scanner和input_Java中输入时IO包与Scanner的区别

最常用的一个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 :流已经关闭了

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值