Java学习系列(十一)Java面向对象之I/O流(下)
今天接着昨天的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流(下)相关推荐
- Java学习系列(十)Java面向对象之I/O流(上)
IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...
- Java学习系列(十三)Java面向对象之界面编程
Java的界面编程 Java在客户端上表现并不突出,客户端往往都是局限在windows平台.AWT(JDK1.0发布,Sun希望在所有平台上都能运行),它并未为界面提供实现,直接调用的是操作系统上相应 ...
- JAVA学习第十一章——面向对象进阶
static static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量 1.静态方法中,只能访问静态 2.非静态方法可以访问所有 3.静态方法中没有this关键字 package a ...
- Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解
今天内容比较多,直接步入正题吧. 类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对 ...
- Java学习系列(十七)Java面向对象之开发聊天工具
TCP通信: Socket --相当于"虚拟链路两端的插座".Socket负责完成通信. ServerSocket --它只负责"接收"连接.它用于产生Sock ...
- Java学习系列及数据结构博客全目录
Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...
- Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
UDP协议:无需建立虚拟链路,协议是不可靠的. A节点以DatagramSocket发送数据包,数据报携带数据,数据报上还有目的目地地址,大部分情况下,数据报可以抵达:但有些情况下,数据报可能会丢失 ...
- Java学习系列(十六)Java面向对象之基于TCP协议的网络通信
TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...
- Java学习07:Java面向对象
Java学习07: Java面向对象: 链接:https://pan.baidu.com/s/1gzlBk5OOVI6oEv-WOkHuhQ 提取码:iqov
最新文章
- linux chroot 命令 设置根目录路径
- 在VS2015中使用Boost库
- SQLSERVER2014的内存优化表
- Find First and Last Position of Element in Sorted Array
- 20155216 Exp5 MSF基础应用
- linux查看svn信息,SVN 查看历史信息
- LeetCode60:Permutation Sequence
- 老男孩Linux Crond定时任务练习题
- 大端、小端的前世今生
- 向博客园提交了MVP申请
- 国内外中英文版一元购网站开发案例源码
- utils 定时器 (一) 多级时间轮
- Smartbi大数据分析工具有哪些功能?
- 类型 异常报告 消息 null 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NumberFormatException: null java.base/
- Vray材质学习笔记08——陶瓷材质
- 生产者消费者模型的作用
- JAVA--发送Google邮件
- 我国标准与国际标准的关系
- 剑指offer第二版(leetcode)Java题解(不断更新)
- 微信无法拖拽文件解决办法