今天接着昨天的IO流讲,内容可能会比较多。

DataInputStream与DataOutputStream
它们是建立在已有的IO的基础上的两个特殊的过滤流。规律:它们只是增加了一些特定的方法读取特定的数据。

举例说明1:

public class Test {public static void main(String[] args) {DataOutputStream dos = null;try {dos = new DataOutputStream(new FileOutputStream("F:/price.txt"));dos.writeDouble(243.21);} catch (IOException e) {e.printStackTrace();} finally {try {dos.close();} catch (IOException e2) {e2.printStackTrace();}}}
}

举例说明2:

public class Test {public static void main(String[] args) {DataInputStream dis = null;try {dis = new DataInputStream(new FileInputStream("F:/price.txt"));System.out.println(dis.readDouble());} catch (IOException e) {e.printStackTrace();} finally {try {dis.close();} catch (IOException e2) {e2.printStackTrace();}}}
}

节点流(System.in是读取键盘输入,可以换成new FileInputStream("f:/1.txt")读文件,也可以换成读网络(Socket)--以后会讲)包装成过滤流编程:

public class Test {public static void main(String[] args) {BufferedReader br = null;try {br = new BufferedReader(new InputStreamReader(System.in));String line = null;while ((line = br.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}
}

Java虚拟机读取其他进程的数据
Java如何启动其他进程:Runtime实例.exec(String command)
举例说明:

public class Test {public static void main(String[] args) {Process process = null;BufferedReader br = null;try {process = Runtime.getRuntime().exec("javac.exe");br = new BufferedReader(new InputStreamReader(process.getErrorStream()));String line = null;System.out.println("编译出错,错误信息如下~~~~~");while ((line = br.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();} finally {try {br.close();} catch (IOException e2) {e2.printStackTrace();}}}
}

RandomAccessFile ---随机(任意)访问文件。 --创建时需要指定r/w模式。
Random --想访问文件的哪个点,就访问文件的哪个点(任意)。
特征:既可读、又可写、还可追加,不会覆盖原有文件内容。但它只能访问文件。
举例说明1:

public class Test {public static void main(String[] args) throws IOException {RandomAccessFile raf = new RandomAccessFile("f:/1.txt", "rw");byte[] buff = new byte[1024];int hasRead = -1;while ((hasRead = raf.read(buff)) > 0) {System.out.println(new String(buff, 0, hasRead));}raf.close();}
}

举例说明2:

/*** @author lhy* @description 向文件中的指定位置插入内容*/
public class Test {public static void main(String[] args) {RandomAccessFile raf = null;try {raf = new RandomAccessFile("f:/1.txt", "rw");insertContent(raf, 100, "Java面向对象之I/O流之RandomAccessFile的使用");} catch (IOException e) {e.printStackTrace();} finally {try {raf.close();} catch (IOException e) {e.printStackTrace();}}}public static void insertContent(RandomAccessFile raf, int pos,String content) {ByteArrayOutputStream bos = null;try {bos = new ByteArrayOutputStream();raf.seek(pos);// 把记录指针移到要插入的地方byte[] buff = new byte[1024];int hasRead = -1;// 将raf从pos位置开始、直到结尾所有的内容while ((hasRead = raf.read(buff)) > 0) {bos.write(buff, 0, hasRead);// 将读取的数据(从pos位置开始)放入bos中}raf.seek(pos);// 再次将记录指针移到要插入的地方raf.write(content.getBytes()); // 写入要插入的内容raf.write(bos.toByteArray()); // 写入之前保存的内容} catch (IOException e) {e.printStackTrace();} finally {try {bos.close();} catch (IOException e) {e.printStackTrace();}}}
}

结束语

有关Java中的IO流类比较多,而且方法大同小异,大家有空可以多查查API文档。今天就讲到这,明天开始讲Java面向对象之序列化机制及版本。

Java学习系列(十一)Java面向对象之I/O流(下)相关推荐

  1. Java学习系列(十)Java面向对象之I/O流(上)

    IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...

  2. Java学习系列(十三)Java面向对象之界面编程

    Java的界面编程 Java在客户端上表现并不突出,客户端往往都是局限在windows平台.AWT(JDK1.0发布,Sun希望在所有平台上都能运行),它并未为界面提供实现,直接调用的是操作系统上相应 ...

  3. JAVA学习第十一章——面向对象进阶

    static static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量 1.静态方法中,只能访问静态 2.非静态方法可以访问所有 3.静态方法中没有this关键字 package a ...

  4. Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解

    今天内容比较多,直接步入正题吧. 类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对 ...

  5. Java学习系列(十七)Java面向对象之开发聊天工具

    TCP通信: Socket --相当于"虚拟链路两端的插座".Socket负责完成通信. ServerSocket --它只负责"接收"连接.它用于产生Sock ...

  6. Java学习系列及数据结构博客全目录

    Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...

  7. Java学习系列(十八)Java面向对象之基于UDP协议的网络通信

    UDP协议:无需建立虚拟链路,协议是不可靠的. A节点以DatagramSocket发送数据包,数据报携带数据,数据报上还有目的目地地址,大部分情况下,数据报可以抵达:但有些情况下,数据报可能会丢失 ...

  8. Java学习系列(十六)Java面向对象之基于TCP协议的网络通信

    TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...

  9. Java学习07:Java面向对象

    Java学习07: Java面向对象: 链接:https://pan.baidu.com/s/1gzlBk5OOVI6oEv-WOkHuhQ  提取码:iqov

最新文章

  1. linux chroot 命令 设置根目录路径
  2. 在VS2015中使用Boost库
  3. SQLSERVER2014的内存优化表
  4. Find First and Last Position of Element in Sorted Array
  5. 20155216 Exp5 MSF基础应用
  6. linux查看svn信息,SVN 查看历史信息
  7. LeetCode60:Permutation Sequence
  8. 老男孩Linux Crond定时任务练习题
  9. 大端、小端的前世今生
  10. 向博客园提交了MVP申请
  11. 国内外中英文版一元购网站开发案例源码
  12. utils 定时器 (一) 多级时间轮
  13. Smartbi大数据分析工具有哪些功能?
  14. 类型 异常报告 消息 null 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NumberFormatException: null java.base/
  15. Vray材质学习笔记08——陶瓷材质
  16. 生产者消费者模型的作用
  17. JAVA--发送Google邮件
  18. 我国标准与国际标准的关系
  19. 剑指offer第二版(leetcode)Java题解(不断更新)
  20. 微信无法拖拽文件解决办法

热门文章

  1. shedlock源码解析
  2. java8 list转map
  3. WebService处理Map
  4. Swoole(PHP高级Web开发框架)
  5. 使用RequireJS优化Web应用前端
  6. window2003 httpdns
  7. 模拟器与真机的程序差别J2ME
  8. asp.net调用ajax实例
  9. 【LeetCode题解】二叉树的遍历
  10. 批量生成zabbix screen xml file