java io inputstream_JAVA之IO流(InputStream和OutputStream)

输入和输出

JAVA的流分为输入流和输出流两部分,

输入流:InputStream或者Reader:从文件中读到程序中;

输出流:OutputStream或者Writer:从程序中输出到文件中;

Reader和Writer是字符流:只能针对字符文件进行读写操作。

InputStream和OutputStream是二进制流:所有的文件都可以进行读写操作。也就是可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。java.io.OutputStream:(抽象类),输出字节流 可以接收待输出的字节并将这些字节发送到某个接收器 。java.io.InputStream: (抽象类),输入字节流,可以将本输入流中的字节读取出来

InputStream和OutputStream

InputStream和OutputStream的部分子类:

字节流:FileInputStream和FileOutputStream

缓冲流:BufferedInputStream和BufferedOutputStream

数据流:DataInputStream和DataOutputStream

对象流:ObjectInputStream和ObjectOutputStream1.FileInputStream和FileOutputStream的应用

FileInputStream是InputStream的子类 文件输入流,可以从文件系统中的某个文件中获得输入字节,把他输入到我们的程序中;

FileOutputStream 是OutputStream的子类,文件输出流, 可以从byte数组中接收数据并将数据写入某个文件。

FileInputStream类的使用:

简单地来说,FileInputStream流的使用,有6个步骤:根据path路径实例化一个输入流的对象,在该方法中会抛出一个文件找不到的时候的一个异常,所以我们在用的时候也要特别注意不要文件路径是否正确,以及文件是和存在;

FileInputStream fis=null;

try {

// 根据path路径实例化一个输入流的对象 fis = new FileInputStream(path);

} catch (FileNotFoundException e) {

// TODO Auto-generated catch blocke.printStackTrace();

}在数据流创建好之后,就可以获取在这个输入流中可以被读的剩下的byte字节的估计值

.然后根据我们获取的这个数据去创建一个byte数组

在然后把我们要读取的数组读到数组中

获取到byte数组之后,根据byte数组去创建一个string字符串;我们可以把这个字符串输出来检查我们是否获取到了数据

要注意的是,在我们获取完数组之后,我们需要去关闭我们的FileInputStream对象;也就是把文件与程序之间的通道关闭;代码如下:

/*** 读取文件中的数据的方法;* @param path要读取得文件的路径和文件全名;* @return 返回读取到的文件中的字符串;*/

// @SuppressWarnings("finally")public String readFile(String path) {

FileInputStream fis = null;// 实例化FileInputStream对象;String str = null;

try {

// 1.根据path路径实例化一个输入流的对象fis = new FileInputStream(path);

//2. 返回这个输入流中可以被读的剩下的bytes字节的估计值;int size = fis.available();

//3. 根据输入流中的字节数创建byte数组;byte[] array = new byte[size];

fis.read(array);//4.把数据读取到数组中;

//5.根据获取到的Byte数组新建一个字符串,然后输出;str = new String(array);

System.out.println(str);//输出;} catch (FileNotFoundException e) {

// 解决new FileInputStream(path);可能会发生的异常;e.printStackTrace();

} catch (IOException e) {

// 解决fis.available()时可能发生的异常;e.printStackTrace();

} finally {

//6.在最后,关闭我们的IO流try {

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return str;

}

FileOutputStream的使用:根据文件路径创建输出流

把string转换为byte数组

把byte数组输出

关闭数据流;

/*** 将数据写入到文件中的方法;* @param path要写入的文件的路径和文件全名;* @param content 要从程序写入文件的字符串*/

public void writeFile(String path, String content) {

FileOutputStream fos = null;

try {

//1.根据文件路径创建输出流fos = new FileOutputStream(path);

//2.把string转换为byte数组;byte[] array = content.getBytes();

//3.把byte数组输出; fos.write(array);

} catch (FileNotFoundException e) {

// 解决new FileOutputStream(path)出现的问题e.printStackTrace();

} catch (IOException e) {

// 解决fos.write(array)可能会出现的问题;e.printStackTrace();

} finally {

/** 在方法的最后一定实现这个方法;*/

try {//4.关闭IO流fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值