`
zhongsw
  • 浏览: 24362 次
文章分类
社区版块
存档分类
最新评论

黑马程序员_Java中IO流知识点及总结.

阅读更多

---------------------- android培训 java培训 、期待与您交流! ----------------------

 

 

 

 

 

 

System: 类中的方法和属性都是静态的 .

out: 标准输出 , 默认是控制台

in: 标准输入 , 默认是键盘 .

获取系统属性信息 :Properties getProperties();

 

Runtime 对象

该类没有提供构造函数 , 说明不可以 new 对象 . 那么会直接想到该类中方法都是静态的 , 但该类中还有非静态方法 . 说明该类肯定会提供了方法获取本类对象 , 而且该方法是静态的 , 并返回值类型是本类类型 . 该类使用了单例设计模式 .

该方法是 static Runtime getRuntime();

Runtime r=Runtime.getRuntime();

r.exec(“xxx.exe”);

 

IO 流用来处理设备之间的数据传输

Java 对数据的操作是通过流的方式

Java 用于操作流的对象都在 IO 包中

流按操作数据分为两种:字节流与字符流

按流向分为:输入流,输出流

字节流的抽象基类

InputStream outputStream

字符流的抽象基类

Reader Writer

 

IO 异常处理方式 , 在外面建立 null 引用 , try 内初始化 , finally 里关闭资源 .

一个标准的 IO 处理异常

import java.io.FileWriter;

 

public class FileWriterDemo {

    public static void main(String[] args){

       FileWriter fw= null ;

       try {

           fw = new FileWriter( "demo.txt" );

           fw.write( "nihaoma?" );

          

       } catch (Exception e) {

           e.printStackTrace();

       } finally {

           try {

              if (fw!= null )

              fw.close();

           } catch (Exception e) {

              e.printStackTrace();

           }

       }

    }

}

 

字符流的缓冲区

缓冲区的出现提高了对数据的读写效率

对应类

BufferedWriter       BufferedReader

缓冲区要结合流才可以使用 , 在流的基础上对流的功能进行了增强 .

缓冲区的出现是为了提高流的操作效率而出现的 . 所以在创建缓冲区前 , 必须要先有流对象 . 只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数 .

其实关闭缓冲区就是在关闭缓冲区中的流对象 .

 

 

装饰设计模式 :

当想要对已经对象进行功能增强时 , 可以定义一个类 , 将该对象传入 , 基于已有对象的功能并提供加强功能 , 那么自定义的该类就称为装饰类 .

装饰类通常会通过构造方法接收被装备的对象 . 并基于被装饰的对象的功能提供加强的功能 .

 

字符流 :

FileReader

FileWriter

 

BufferedReader 缓冲区

BufferedWriter

 

字节流 :

FileInputStream     FileOutputStream

BufferedInputStream     BufferedOutputStream 缓冲区

 

读取转换流 .InputStreamReader

键盘录入 .BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

 

写入转换流     OutPutStreamWriter

控制台输出 :BufferedWriter buwr=new BufferedWriter(new OutputStreamWriter(System.out));

 

上面可以通过 System.setIn System.setOut 来设置对应的源和目的 .

 

转换流什么时候用 ?

字符和字节之间的桥梁 , 通常波及到编码转换时要用到转换流 .

 

流操作的基本规律 :

1.       明确源和目的

2.       操作的数据是否是纯文本 .

3.       当体系明确后 , 在明确要使用哪个具体对象 . 是否要提高效率 . 来加入转换流 .

 

IO File 类是文件和目录路径名的抽象表示形式。

用来将文件或者文件夹封闭成对象 .

方便对文件与文件夹的属性信息进行操作 .

File 对象可以作为参数传递给流的构造函数 .

separator 字段是目录分隔符 .

File f=new File(“a.txt”);// a.txt 封闭成 file 对象 . 可以将已有的和末出现的文件夹封装成对象 .

File f2=new File(“c:\\abc”,”b.txt”);//”b.txt” 可以传一个可变的参数 .

syso(f);// 打印文件的路径 , 按封装时的格式打印出来 .

File 常见方法 .

1.       创建 boolean  createNewFile();

2.       删除 boolean delete();  void deleteOnExit();  mkdir();  new File(“abc\\kk”).mkdir();

mkdirs(); 创建多级文件夹 .

3.       判断        Boolean   exists(); 文件是否存在 .

isDirectory();isFile(); 通过这两方法可以判断封装完的对象是什么 ?

4.       获取信息 .getXXX();

 

列出目录下的所有内容 , 递归 .

1.       递归注意限定条件 .

2.       注意递归的次数 , 不要内存溢出 .

 

Properties hashtable 的子类 . 也就是说它具备 map 集合的特点 , 而且它里边存储的键值都是字符串 . 是集合和 IO 技术相结合的集合容器 .

该对象的特点 : 可以用于键值对形式的配置文件 .

 

 

InputStreamReader 和OutputStreamWriter
明白这是什么转换流?按操作数据它们是什么流?
看JDK:InputStreamReader 是字节流通向字符流的桥梁;OutputStreamWriter 是字符流通向字节流的桥梁
明白这为什么是这样?明确接收什么流类型?为什么转成另一种流类型和转的过程?
我认为彻底明白了上面这些问题才算明白IO流的基础,才能知道什么流何时用合适.
自己刚学时也是一点不明白.到后面复习知识点时这在脑海中思路才清晰起来.

 

 

 

打印流 PrintWriter PrintStream       可以直接操作输入流和文件 .

该流提供了打印方法 , 可以将各种数据类型的数据都原样打印 .

PrintStream 构造函数可以接收的参数类型 :

1.       file 对象 .  File

2.       字符串路径 .    String

3.       字节输出流 .    OutputStream

字符打印流 :PrintWriter 构造函数可以接收的参数类型 :

1.       file 对象 .  File

2.       字符串路径 .    String

3.       字节输出流 .    OutputStream

4.    字符输出流     Writer

 

序列流 SequenceInputStream      对多个流进行合并 .

表示其他输入流的逻辑串联 . 可以接收多个字节流对象 , enum 形式来表示 .

 

操作对象 ObjectInputStream ObjectOutputStream 被操作的对象需要实现 Serializable( 标记接口 ).

 

管道流 PipedInputStream PipedOutputStream

对应的用 connect 相连接 .

随机访问文件 RandomAccessFile

该类直接继承自 Object, 不算是 IO 体系中子类 , 因为具备读写所以是 IO 包中成员 .

内部封装了一个数组 , 而且通过指针对数组元素进行操作 . 可以通过 getFilePointer 获取指针位置 , 还可以通过 seek 改变指针位置 .

其实能完成读写的原理就是内部封装了字节输入流和字节输出流 , 该类只能操作文件 . 而且操作文件还有模式 .    r  rw

该对象的构造函数要操作的文件不存在会自动创建 , 如果存在不会覆盖 .

如果模式为 r 不会创建文件 , 只会读取 , 文件如果不存在会出异常 .

如果模式为 rw, 文件不存在会创建 , 在不会覆盖 .

 

操作基本数据类型的 IO

DateInputStream DateOutputStream

操作字节数组

ByteArrayInputStream ByteArrayOutputStream

这两个流对象都操作的数组 , 并没有使用系统资源 , 所以不用 close 关闭 .

内存就是 ArrayStream, 用流的读写思想操作数组 .

 

操作字符数组

CharArrayReader CharArrayWriter

操作字符串

StringReader StringWriter

 

字符编码 :

编码 : 字符串变成字节数组   String à byte[];     str.getBytes();

解码 : 字节数组变成字符串 .  byte[] à String:      new String(byte[]);

服务器用的是 ISO8859-1

<待续>

 

 

 

 

---------------------- android培训 java培训 、期待与您交流! ----------------------

分享到:
评论

相关推荐

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...

    黑马程序员_Java基础辅导班教程课件[第01期]第13天

    在"黑马程序员_Java基础辅导班教程课件[第01期]第13天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java开发的基本技能。第13天的课程通常会涵盖上一天(第12天)所学...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二).zip

    在本教程“黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二)”中,主讲人毕向东将深入讲解如何使用Java有效地读取文本文件,特别是第二种常用的方法。以下是关于Java IO流和文本文件读取的...

    黑马程序员_Java基础辅导班教程课件[第01期]第8天

    【Java基础辅导班教程课件】是针对初学者设计的一系列教学资源,旨在帮助学习者扎实掌握Java编程语言的基础知识。...在学习过程中,不断实践和理解这些知识点,将有助于成为一位合格的Java开发者。

    IO-黑马程序员Java学习笔记.rar

    Java的输入/输出(IO)系统是编程中的一个重要部分,特别是在开发服务器端应用程序、文件处理以及...通过阅读"IO-黑马程序员Java学习笔记",开发者可以系统地学习并实践这些知识点,从而提升自己的Java IO编程能力。

    黑马程序员java面试宝典 完整版PDF.rar

    《黑马程序员Java面试宝典》是一本专门为Java开发者准备的面试指南,包含了广泛而深入的Java技术知识,以及面试过程中可能会遇到的各种问题。这本书的完整版PDF提供了丰富的学习材料,帮助求职者提升自己的技术水平...

    黑马程序员入学Java知识——精华总结

    "黑马程序员入学Java知识——精华总结"这份文档很可能包含了Java编程的基础到进阶的知识点,旨在帮助初学者快速掌握Java的核心概念和技能。 1. **Java基础知识**:Java是一种面向对象的语言,它的基础包括语法、...

    传智播客_Java培训_毕向东_Java基础[07-IO]

    ### 传智播客_Java培训_毕向东_Java基础[07-IO]知识点解析 #### 一、概述 本教程由传智播客的资深讲师毕向东老师讲解,主要内容涉及Java语言中的输入输出(IO)技术。这部分是Java编程的基础之一,对于初学者来说...

    黑马程序员java基础试题、笔记

    "黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    黑马程序员入学面试题

    Java的IO体系主要包括字节流(InputStream/OutputStream)和字符流(Reader/Writer),它们用于处理文件读写、网络通信等操作。 #### 18. 集合体系 Java集合框架主要包括List、Set、Map三种集合类型,以及它们的...

    黑马程序员面试宝典(java).7z

    《黑马程序员面试宝典》是针对Java开发人员的一份综合性的面试准备资料,它涵盖了Java全栈开发中的关键知识点,并且特别强调了在面试中可能会遇到的问题和解答。这份资源包含了一份超过500页的企业面试真题集,旨在...

    黑马程序员JAVA面试宝典2018年5月最新版

    《黑马程序员JAVA面试宝典2018年5月最新版》是一本专门为Java开发者准备的面试指南,它集合了2018年5月时最新的面试知识点和业界趋势,旨在帮助Java程序员在求职过程中更好地应对各类技术面试。这本书可能涵盖了Java...

    黑马程序员面试宝典(java)2018版

    《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    Java面试宝典是Java程序员求职面试的重要参考资料,它涵盖了Java编程语言的核心概念、...以上这些知识点构成了Java面试的主要内容,熟练掌握并能灵活应用,将极大地提升你在面试中的竞争力,助你在求职路上一马当先。

    黑马程序员Java基础视频辅导班Day03

    【Java基础知识点详解】 在Java编程中,运算符与流程控制是...以上是Java基础中的关键知识点,理解和掌握这些内容对于编写高效、准确的Java代码至关重要。在编程实践中,灵活运用这些知识可以提高代码的可读性和效率。

    java程序员必备的面试宝典秘籍.pdf

    Java程序员在面试中需要掌握的知识点广泛而深入,涵盖了核心Java、面向对象设计与UML、XML、SQL、JDBC与Hibernate、Web技术、企业级Java应用如EJB与Spring,以及数据结构、算法和计算机基础知识,甚至有时还会涉及...

    2018-2019年黑马最新版Java程序员面试宝典+题库pdf

    《2018-2019年黑马最新版Java程序员面试宝典+题库pdf》是一份集合了近年来Java编程领域重点知识和面试常见问题的综合资源。这份资料主要针对初级Java程序员,旨在帮助他们巩固基础知识,掌握面试技巧,以便在求职...

Global site tag (gtag.js) - Google Analytics