Java流结构介绍

Java所有的流类位于java.io包中,都分别继承字以下四种抽象流类型。

  字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

1.继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据,且数据的单位都是字节(byte=8bit),如图,深色的为节点流,浅色的为处理流。

 

2.继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit),如图,深色的为节点流,浅色的为处理流。

Java流对文件的读取代码演示

1.java的输出流---字节流

代码展示:

  1. public class Ioshow {
  2. public static void main(String[] args) {
  3. new Ioshow().outStreamMethod();
  4. }
  5. public void outStreamMethod(){
  6. try {
  7. //创建输出字节流 并指定输出的文件地址
  8. OutputStream os = new FileOutputStream("F:/iotest/outio.txt");
  9. //要输入文件的字段
  10. String ostr = "写入到文件中";
  11. //调用输出流的write方法输出到指定文件中
  12. os.write(ostr.getBytes());
  13.  
  14. System.out.println("执行完毕");
  15. } catch (FileNotFoundException e) {
  16. e.printStackTrace();
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }

运行结果:

2.Java的输入流---字节流

代码展示

  1. public class Ioshow {
  2. public static void main(String[] args) {
  3. // new Ioshow().outStreamMethod();
  4. new Ioshow().inputStreamMethod();
  5. }
  6. public void inputStreamMethod(){
  7. try {
  8. //创建输入字节流 并指定要读取的文件地址
  9. InputStream is = new FileInputStream("F:/iotest/inputio.txt");
  10. //声明一个字节流对象
  11. byte cont[]=new byte[1024];
  12. //将文件中的内容读取到字节数组中
  13. is.read(cont);
  14. //打印出读取的内容
  15. System.err.println(new String(cont));
  16.  
  17. } catch (FileNotFoundException e) {
  18. e.printStackTrace();
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }

运行结果

3.java输入流----字符流

代码展示

  1. public void fileinput(){
  2. try {
  3. File file = new File("F:/iotest/inchartio.txt");
  4.  
  5. //创建输入流 并指定读取文件位置
  6. InputStream reader = new FileInputStream(file);
  7. //创建字符输入流 并传入输流对象 并指定输入流的读取编码
  8. InputStreamReader is = new InputStreamReader(reader, "UTF-8");
  9. char chat[] = new char[1000];
  10. //将文件中的内容读取到 chart[]中
  11. is.read(chat);
  12. for (char c : chat) {
  13. System.out.print(c);
  14. }
  15. } catch (FileNotFoundException e) {
  16. e.printStackTrace();
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20.  
  21. }

运行结果

4.java输出流-----字符流

实现将inchartio.txt文件的内容读取到outchartio.txt中

代码展示

  1. public class Ioshow {
  2. public static void main(String[] args) {
  3. // new Ioshow().outStreamMethod();
  4. // new Ioshow().inputStreamMethod();
  5. new Ioshow().fileinput();
  6. }
  7. public void fileinput(){
  8. try {
  9. System.out.println("====start read====");
  10. File file = new File("F:/iotest/inchartio.txt");
  11. //创建输入流 并指定读取文件位置
  12. InputStream reader = new FileInputStream(file);
  13. //创建字符输入流 并传入输流对象 并指定输入流的读取编码
  14. InputStreamReader is = new InputStreamReader(reader, "UTF-8");
  15. char chat[] = new char[1000];
  16. //将文件中的内容读取到 chart[]中
  17. is.read(chat);
  18. System.out.print(chat);
  19. //声明一个输出的文件
  20. File outfile = new File("F:/iotest/outchartio.txt");
  21. System.out.println(outfile.exists());
  22. if (outfile.exists()==false) {//文件若不存在
  23. System.out.println("没有该文件夹 创建了一个");
  24. outfile.createNewFile();//创建文件
  25. }
  26. //创建输出流
  27. OutputStream os = new FileOutputStream(outfile);
  28. //创建字符流 并传入输出流 指定字符编码
  29. OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
  30. //将读取到的内容写到文件中
  31. osw.write(chat);
  32. //清空输出流
  33. osw.flush();
  34. System.out.println("===the end====");
  35. } catch (FileNotFoundException e) {
  36. e.printStackTrace();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }

运行结果

Java流对图片的读取和写入

代码展示:

  1. public class Ioshow {
  2. public static void main(String[] args) {
  3. new Ioshow().imginput();
  4. }
  5. public void imginput(){
  6. InputStream is = null;
  7. DataInputStream dis = null;
  8. OutputStream os =null;
  9. DataOutputStream dos =null;
  10. try {
  11. is = new FileInputStream("F:/iotest/帅气猴.jpg");
  12. dis = new DataInputStream(is);
  13.  
  14. os = new FileOutputStream("F:/iotest/输出猴.jpg");
  15. dos = new DataOutputStream(os);
  16. int img ;
  17. while ((img = dis.read())!=-1) {
  18. dos.write(img);
  19. }
  20.  
  21. } catch (FileNotFoundException e) {
  22. e.printStackTrace();
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. } finally {
  26. try {
  27. dos.close();
  28. os.close();
  29. dis.close();
  30. is.close();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34.  
  35. }
  36.  
  37. }
  38. }

运行结果

通过举例了解java中的流的更多相关文章

  1. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  2. Java中IO流的总结

    有关Java中IO流总结图 流分类 按方向分 输入流 输出流 按单位分 字节流 字符流 按功能分 节点流 处理流(过滤流) 其他 所有的流继承与这四类流:InputSteam.OutputStream ...

  3. java中有关流操作的类和接口

    一.java操作l流有关的类和接口 1.File 文件类 2.RandomAccessFile 随机存储文件类 3.InputStream 字节输入流 4.OutputStream 字节输出流 5.R ...

  4. 理解Java中字符流与字节流

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

  5. 理解Java中字符流与字节流的区别(转)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  6. Java中对象流使用的一个注意事项

    再写jsp的实验作业的时候,需要用到java中对象流,但是碰到了之前没有遇到过的情况,改bug改到崩溃!!记录下来供大家分享 如果要用对象流去读取一个文件,一定要先判断这个文件的内容是否为空,如果为空 ...

  7. java 中 IO 流分为几种?(未完成)

    java 中 IO 流分为几种?(未完成)

  8. JAVA中IO流总结

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...

  9. Java中IO流中的装饰设计模式(BufferReader的原理)

    本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流 ...

随机推荐

  1. Nginx系列1.2:nginx-rtmp流媒体服务器添加权限认证(推流权限和播放权限)

    用到的工具:OBS Studio(推流).nginx-rtmp流媒体服务器.VLC(拉取流播放) Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器 Nginx系列1.1:ubu ...

  2. glPixelStorei 详解 包括像素传输

    3.glPixelStore 像glPixelStorei(GL_PACK_ALIGNMENT, 1)这样的调用,通常会用于像素传输(PACK/UNPACK)的场合.尤其是导入纹理(glTexImag ...

  3. jade-if-else-unless-case

    if else - var lession = ['node','jade'] if lession if lession.length > 2 p 1 #{lession.join(', ') ...

  4. ubuntu下后台服务的管理

    注册后台服务后都有脚本存在/lib/systemd/system路径下 如mysql为mysql.service 被service管理的进程被杀掉还是会重启的 应使用service XXX stop停 ...

  5. 二、vue基础--计算属性和监听器

    1.一些操作需要计算后才能得到的用计算属性,需要放在computed属性中代码如下: <div id='app'> <div> <label>宽:</labe ...

  6. python----四种内置数据结构(dict、list、tuple、set)

    1.dict 无序,可更改 2.tuple 有序,不可更改 3.list 有序,可更改(增加,删除) 4.set 无序,可能改 {元素1,元素2,元素3.....}和字典一样都是用大括号定义,不过不同 ...

  7. Pycharm----显示tab制表符

    设置前: 设置后: 操作方法:

  8. jQuery匿名函数和自定义插件

    https://www.cnblogs.com/joey0210/p/3408349.html (function($){ //do something;   })(jQuery);

  9. centos6.5 安装emqtt

    emqtt有监控界面,集群配置也非常简单. # yum -y update # yum install unzip vim wget xsltproc fop tk unixODBC unixODBC ...

  10. OPT

    http://cdn.imgtec.com/sdk-documentation/PowerVR.Performance+Recommendations.pdf 宝贝 https://developer ...