第40节:Java中的IO知识案例

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

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 FileReader
Writer 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<buffer.length; i++){
    System.out.println(buffer[i];
   }
  //
  }catch(Exception e){
   System.out.println(e);
  }finally{
   try{
    fr.close();
    fw.close();
   }catch(Exception e){
   System.out.println(e);
  }
  }
 }
}

装饰者模式

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后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: https://www.jianshu.com/u/c785ece603d1

结语

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

原文地址:https://www.cnblogs.com/dashucoding/p/9610136.html

时间: 2024-10-30 10:37:41

第40节:Java中的IO知识案例的相关文章

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和BufferedOutputStream.以及对应的FileOutputWriter,FileInputReader,BufferedInputReader,BufferedOutputWriter. 3. 转换流InputStreamReader和OutputStreamWriter 一:流的继承关系 字节

Java中的IO流(五)

上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.并且此注永远不会抛出IOException. 此流的构造函数大致分三类 1,接收File文件类型的 2,接收OutputStream类型的 3,接收文件名形式的 下演示一下此流的两个方法 1 private static void functio

Java中的IO流之输入流|乐字节

亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了.上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输出流. 点击回顾上一篇:乐字节Java之file.IO流基础知识和操作步骤 一. 输入流 字节流和字符流的操作方式几乎完全一样,只是操作的数据单元不同而已 .字节流可 以操作所有文件,字符流仅操作纯文本. 1.抽象类:InputStream 和 Reader InputStream和Reader是所有输入流的基类,它们是两个抽象类,是所有输入流的模版,其中定义的方法在所有输入流中都可

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

JAVA 中的IO流

Java中的IO流是用来处理设备与设备之前的数据传输,在java中以流的形式传输.流分为两类:字节流和字符流. 字节流:InputStream,OutPutSteam.(计算机内的数据都是以字节存储的,字节流可以操作任意数据) 字符流:Reader,Writer.(字符流只能操作字符,但是在实际应用中字符流比较方便) 从操作来看又可以分为:输入流和输出流. 在进行IO流操作的时候分为以下几步:1.导入IO流的包,2.进行IO流的异常处理,3.关闭IO流释放资源. 字节流 ————————————

java中的io系统详解

java中的io系统详解 分类: JAVA开发应用 笔记(读书.心得)2009-03-04 11:26 46118人阅读 评论(37) 收藏 举报 javaiostreamconstructorstringbyte 相关读书笔记.心得文章列表 Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他

深入理解Java中的IO

深入理解Java中的IO 引言:     对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java >   本文的目录视图如下: Java IO概要 a.Java IO中常用的类 b.Java流类的类结构图 1.流的概念和作用 2.Java IO所采用的模型  : 3.IO流的分类 4.Java IO流对象 1.输入字节流InputStream 2.输出字节流OutputStream 3.字符输入流Reader 4.字符输出流Write

java中的IO基础总结

java中的I/O类库设计可谓是比较丰富的,在我们平时的编程中也经常接触到,往往大部分的系统都有对IO操作的一些封装代码,平时要用到往往翻翻api或者找个写好的方法复制就搞定,由此带来的是对java本身提供的这些方法不熟悉,平时不好好梳理下,对java的io包下面这些常用类也就比较凌乱了.所以这里通过api文档和java.io下面的源码去整理下. 1.表示字节输入输出流的所有类的超类(InputStream/OutputStream) 构造方法:InputStream() 创建一个输入的stre

JAVA中各种IO的关系及说明

JAVA中的IO以前看着太混乱了,现在梳理一下 1.IO流分为两大类,一个是以stream结尾的,叫做字节流,顾名思义,按照byte为单位进行传输:另一种是以reader和writer结尾的叫做字符流,它貌似是封装了stream结尾的 IO流类,而产生的另一种功能类似,但是传输介质不再是byte,而是字符,也就是说,根据传说字符的不同,比如UTF-8,GBK等,它的传输单位也不是固定的. 2.输入输出,输入指的是从文件向内存中进行读入,输出指的是,内存中的内容写出到文件中 3.常见的Buffer