博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第40节:Java中的IO知识案例
阅读量:5098 次
发布时间:2019-06-13

本文共 4731 字,大约阅读时间需要 15 分钟。

标题图

流是一连流串的字符,是信息的通道,分输出流和输入流。

IO的分类

第一种分:输入流和输出流。

第二种分:字节流和字符流。
第三种分:节点流和处理流。

Java中流的分类:

流的运动方向,可分为输入流和输出流两种。

流的数据类型,可以分为字节流和字符流。

输入流类都是抽象类InputStream(字节输入流)或抽象类Reader类(字符输入流)的子类。

输出流类都是抽象类OutputStream(字节输出流)或抽象类Writer类(字符输出流)的子类。

输入流从文件输入为读取,输出流从文件输出为写入数据。

字节输入流InputStrem和子节输出流OutputStream

InputStream:FileInputStream,ObjectInputStream,ByteArrayInputStream,StringBufferInputStream,BufferedInputStream,DataInputStream

OutputStream:FileOutputStream,ObjectOutputStream,ByteArrayOutputStream,BufferedOutputStream,DataOutputStream

输入流

输入流用于读取数据,用户可以从输入流中读取数据,但不能写入数据。

输入流读取数据过程如下:

(1)打开一个流。
如:FileInputStream inputFile=new FileInputStream("数据源");
(2)从信息源读取信息。
如:inputFile.read();
(3)关闭流。
如:inputFile.close();

输出流

输出流用于写入数据。只能写,不能读。

写数据到输出流过程如下:

(1)打开一个流。
如:FileOutputStream outFile=new FileOutputStream("数据源");
(2)写入信息到目的地。
如:outFile.write(inputFile.read()):
(3)关闭流。
如:outFile.close();

字符流ReaderWriter

字节字符转换流:

InputStreamReader
OutputStreamWriter

加入缓冲流可以加快输入和输出的速度。

FileInputStream fis = new FileInputStream("from.txt");InputStreamReader isr = new InputStreamReader(fis);// 可以加快输入和输出的速度BufferedReader br = new BufferedReader(isr);
FileInputStream fis = new FileInputStream("from.txt");InputStreamReader isr = new InputStreamReader(fis);// 可以加快输入和输出的速度BufferedReader br = new BufferedReader(isr);FileOutputStream fos = new FileOutputStream("from.txt");OutputStreamWriter osw = new OutputStreamWriter(fos);// 可以加快输入和输出的速度BufferedWriter bw = new BufferedWriter(osw);
import java.io.*;class Test{ public static void main(String[] args){  // 声明输入流  FileInputStream fis = null;  // 声明输出流  FileOutputStream fos = nulll;  try{   // 生成输入流对象   fis = new FileInputStream("e:/from.txt");   // 生成输出流的对象   fos = new FileOutputStream("e:/to.txt");  // 生成字节数组   byte[] buffer = new byte[1024]; while(true){ // 调用输入流对象的read方法  int temp = fis.read(buffer,0,buffer.length);  if(temp == -1){   break;  }  fos.write(buffer,0,temp); }  }catch(Exception e){   System.out.println(e); }finally{  try{  fis.close();  fos.close();  }catch(Exception e){   System.out.println(e);  } }}}

字节输入流和字节输出流

Reader FileReaderWriter FileWriter
int read(char[] c, int off, int len)void write(char[] c, int off, int len)
import java.io.*;public class Demo{ public static void main(String args[]){  FileReader fr = null; // 字符输入流  FileWriter fw = null;  try{   fr = new FileReader("e:/from.txt"); // 读取的文件路径   fw = new FileWriter("e:/to.txt");    char[] buffer = new char[100];   int temp = fr.read(buffer,0,buffer.length);   fw.write(buffer,0,temp);  //   for(int i = 0; i

装饰者模式

BufferedReader 处理流 字符流 输入流,字符输入处理流。

方法readLine()

import java.io.*;class Test{ public static void main(String args[]){  FileReader fileReader = null;  BufferedReader bufferedReader = null;  tryl{   fileReader = new FileReader("e:/from.txt");   bufferedReader = new BufferedReader(fileReader);   // readLine() 读取一行数据   String line = bufferedReader.readLine();   System.out.println(line);    //     String line = null;    while(true){     line = bufferedReader.readLine();     if(line == null){      break;     }     System.out.println(line);    }  }catch(Exception e){   System.out.println(e);  }finally{   try{    bufferedReader.close();    fileReader.close();  }catch(Exception e){   System.out.println(e);  } }}

工厂模式

interface Student{ public void doWork();}
class Demo1 implements Student{ public void doWork(){  System.out.println("Demo1"); }}
class Demo2 implements Student{ public void doWork(){  System.out.println("Demo2"); }}
class Dashu implements Student{ private Stuent student; public Dashu(Student student){ this.student = student; } public void doWork(){  System.out.println("dashu");  student.doWork(); }}
class School{ public static void main(String[] args){   //    Demo1 demo1 = new Demo1();   Dashu dashu = new Dashu(demo1);   dashu.doWork(); }}

IO为输入输出的意思,从外面读取数据用InputStream,向外边写入数据用OutputStreamStream为流,在计算机中一切都是以二进制的字节构成的世界,InputStreamOutputStream来读取二进制,我们看起来会很麻烦,所以有了Reader/Writer的接口,用来处理这些字符流。

FileReader fileReader = new FileReader("e:/from.txt");BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();
try{FileReader fileReader = new FileReader("e:/from.txt");BufferedReader bufferedReader = new BufferedReader(fileReader);String line = null;while(true){ line = bufferedReader.readLine(); if(line == null){  break; } System.out.println(line);}}catch(Exception e){ System.out.println(e);}finally{ try{  bufferedReader.close();  fileReader.close();}catch(Exception e){ System.out.println(e);}

增强API - NIO non-blocking IO

Channel Buffer Selector

nio新加的,对线程是非阻塞的作用。

往后余生,唯独有你

简书作者:达叔小生
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客:

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

转载于:https://www.cnblogs.com/dashucoding/p/9610136.html

你可能感兴趣的文章
python 抓取 国美价格地址
查看>>
安装 启动 停止 卸载 Windows服务 c#
查看>>
[转]]将 ASP.NET MVC3 Razor 项目部署到虚拟主机中
查看>>
LeetCode 第55题 跳跃游戏
查看>>
js执行后console自动返回undefined问题
查看>>
sql server 带输入输出参数的分页存储过程(效率最高)
查看>>
面试所遇到的问题(一)
查看>>
5. javacript高级程序设计-引用类型
查看>>
Codeforces 1153
查看>>
Safari下input样式无法设置的问题
查看>>
shell脚本值case
查看>>
NSTimer与iphone的简单动画
查看>>
angular1 自定义手风琴写法
查看>>
软件工程知识点总结
查看>>
【Miktex】使用教程以及数学符号整理总结
查看>>
Hibernate -- Session的主键生成策略
查看>>
Oracle 分页
查看>>
LINUX - getopts
查看>>
【CJOJ1644】【洛谷2758】编辑距离
查看>>
基于SAAJ的客户端
查看>>