JAVA中inputStream/OutputStream字节输入流、输出流读写文件
2017-05-15 14:36
567 查看
好记性不如赖笔头……
注意:InputStream/OutputStream是抽象类,不能被实例化,只能实例化其子类,且是字节流,不是字符流
InputStream is = new FileInputStream(“a.txt”); 等同于 InputStream is = new FileInputStream(new File(“a.txt”));
OutputStream类似与之类似,
注意:InputStream/OutputStream是抽象类,不能被实例化,只能实例化其子类,且是字节流,不是字符流
InputStream is = new FileInputStream(“a.txt”); 等同于 InputStream is = new FileInputStream(new File(“a.txt”));
OutputStream类似与之类似,
package com.Ckinghan.outputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class OutputStreamDemo { public static void main(String[] args) { /** * 使用字节流写入文件 */ outputStreadRead(); /** *字节流的数据读取方式一:每次读取一个字节 */ inputStreamReader(); /** * 字节流的数据读取方式二:每次读取一定长度的字节,建议使用 */ inputStreamReader1(); /** * 字节流的数据读取方式三:每次读取一定长度的字节从指定的数组索引上保存数据 */ inputStreamReader2(); } /** * @描述:字节流的数据读取方式三:每次读取一定长度的字节从指定的数组索引上保存数据 * @创建时间: */ public static void inputStreamReader2(){ //创建字节对象 InputStream inputStream = null; try { //实例化对象 inputStream = new FileInputStream("JavaIOOutputStreamReader.java"); /** * 每次读取一定长度的字节从指定的数组索引上保存数据,可以读取中文(文件中的数据为:OutputStreamp测试写入数据) */ //定义每次读取字节的大小与保存字节的数据 byte[] bs = new byte[1024]; //定义每次读取的长度 int len = -1; /** * inputStream.read(bs,1,10); 参数说明: * bs:数组,每次最大可以保存1024个字节 * 1 :指定的索引位置,这里是从bs数组的索引1个开始保存数据 * 10:从inputStream读取的字节个数,从0开始,注意,如果读取的数据中文,而读取的字节个数为奇数,可能会现无法识别或错误的数据 */ len = inputStream.read(bs,1,10); //输出字符,注意:在输出时,应从指定的索引位置进行读取 System.out.println(new String(bs,1,len)); } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally { //关闭流 if(inputStream != null){ try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * @描述:字节流的数据读取方式二:每次读取一定长度的字节,建议使用 * @创建时间: */ public static void inputStreamReader1(){ //创建字节对象 InputStream inputStream = null; try { //实例化对象 inputStream = new FileInputStream("JavaIOOutputStreamReader.java"); /** * 读取一定长度的字节数据,建议使用,可以读取中文(文件中的数据为:OutputStreamp测试写入数据) * 读取结果为:OutputStreamp测试写入数据 */ //定义每次读取字节的大小与保存字节的数据 byte[] bs = new byte[1024]; //定义每次读取的长度 int len = -1; //循环读取数据,如果读取的数据为-1,说明已经读取了末尾 while((len = inputStream.read(bs)) != -1){ //输出字符 System.out.println(new String(bs,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally { //关闭流 if(inputStream != null){ try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * @描述:字节流的数据读取方式一:每次读取一个字节 * @创建时间: */ public static void inputStreamReader(){ //创建对象 InputStream inputStream = null; try { //实例化对象 inputStream = new FileInputStream("JavaIOOutputStreamReader.java"); /** * 每次读取一个字节,对于英文是可以的(文件中的数据为:OutputStreamp测试写入数据), * 但不能读取中文,因为编码我使用的是UTF-8,一个中文占两个字节的长度 * 读取的结果如下:OutputStreamp???????????? */ //创建读取的字符,保存的对应的acsii码 int b = -1; //循环读取字符,如果字符为-1,说明已读取到文件的末尾 while ((b = inputStream.read()) != -1) { //将读取的acsii码转换为字符并输出 System.out.print((char)b); } System.out.println(); } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally { //关闭流 if(inputStream != null){ try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * @描述:使用字节流写入数据到文件中 * @创建时间: */ public static void outputStreadRead(){ //创建字节流对象 OutputStream stream = null; try { //实例化对象 stream = new FileOutputStream("JavaIOOutputStreamReader.java"); //要写入的字符串数据 String string = "OutputStreamp测试写入数据"; //将字符串数据转换为字节数组 byte[] bytes = string.getBytes(); //将字节数组写入到文件 stream.write(bytes); //清空缓冲区,将写入的数据保存 stream.flush(); //写入成功后的提示语 System.out.println("写入文件成功"); //抛出异常 } catch (IOException e) { e.printStackTrace(); }finally { //如果stream被实例化 if(stream != null){ try { //关闭字节流 stream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
相关文章推荐
- 使用基本字节输入流,字节输出流一次读写一个字节来复制文本 文件
- Java 字节流实现文件读写操作(InputStream-OutputStream)
- Java 字节流实现文件读写操作(InputStream-OutputStream)
- Java文件字节输入流(FileInputSream)文件字节输出流(OutputStream),字符输入输出流(FileReader/FileWriter)
- java: InputStreamReader将字节的输入流变成字符的输入流,OutputStreamWriter将字符的输出流变成字节的输出流
- android 向内存中 读写 文件数据 》》》java基础---- 文件输入流,文件输出流
- Java文件读写数据流大全(InputStream、OutputStream、FileInpuStream)
- Java 输出流转输入流的方法(OutputStream转InputStream,Writer转Reader)
- java:OutputStream和InputStream 输出输入流,FileOutputStream,FileInputStream写入读取流
- Java中 IO中的字节输入流InputStream,字节输出流InputStream
- Java文件读写数据流大全(InputStream、OutputStream、FileInpuStream)
- Java文件读写数据流大全(InputStream、OutputStream、FileInpuStream)
- java中使用文件输入流和文件输出流进行文件读写的用例!
- Java基础知识强化之IO流笔记29:BufferedOutputStream / BufferedInputStream(字节缓冲区流) 之BufferedInputStream读取数据
- java IO总结之字节流操作文件读写(高效)
- java中输入流和输出流的转换,inputstream 转换 outputstream
- java 文件字节输入流
- java里如何使用输入流和输出流实现读取本地文件里内容和写出到本地文件里
- JAVA I/O中面向字节的InputStream和OutputStream以及面向字符的Reader和Writer简介
- java字节文件输入流读文件