Java中的I/O
使用I/O流访问file中的内容。
JVM与外界通过数据通道进行数据交换。
分类:按流分为输入流和输出流,按传输单位分为字节流和字符流,还可以分为节点流和过滤流。
节点流:负责数据源和程序之间建立连接。
过滤流:用于给节点增加功能。在关闭流时如果使用了过滤流,只需关闭最外层的流就可以了。
过滤流的构造方式是以其他流为参数构造(这样的设计模式称为装饰模式)并且过滤流本身不能使用,他的作用只是增强节点
流的功能。
字节输入流:
InputStream类(抽象类)
所有字节输入流的父类
io包中的InputStream为所有字节输入流的父类。
int read();读入一个字节(每次一个);
可先使用new byte[],调用read(byte[] b),byte[]数组长度决定了可以读取到的最大字节数,用来调整效率。read
(byte[])返回值可以表示有效数;read (byte[])返回值为-1表示结束。
字节输出流:io包中的OutputStream位所有字节输入流的父类。Write和输入流中的read相对应。
在流中close()方法由程序员控制。因为输入输出流已经超越了VM的边界,所以有时可能无法回收资源。
原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。
以Stream结尾的类都是字节流。
如果构造FileOutputStream的同时磁盘会建立一个文件。如果创建的文件与磁盘上已有的文件名重名,就会发生覆盖。
用FileOutputStream中的boolean,则视添加情况,将数据覆盖重名文件还是将输入内容放在文件的后面。(编写程序验
证)
如:FileInputStream,ObjectInputStream,PipedInputStrean都是InputStream类的子类。
1) 三个基本的read()方法
a. int read(): 从流里读出的一个字节或者-1; (实际读了多长)
b. int read(byte[]):将数据读入到字节数组中,并返回所读的字节数; (期望读了多长)
c. int read(byte[], int , int):两个int参数指定了所要填入的数组的子范围。
2) 其它方法
a. void close(): 关闭流,如使用过滤器流,关闭最外部的流,会关闭其余的流。
b. int available(): 返回可从流中读取的字节数。
c. void skip(long): 丢弃了流中指定数目的字符。
d. boolean markSupported()
e. void mark(int)
f. void rese()
OutputStream类(抽象类)
所有输出流的父类。
1) 三个基本的write()方法
a. void write()
b. void write(byte[])
c. void write(byte[], int , int)
2) 其它方法
a. void close(): 关闭流,如使用过滤器流,关闭最外部的流,会关闭其余的流。
b. void flush(): 允许你强制执行写操作。
注意:在流中close()方法由程序员控制。因为输入输出流已经超越了JVM的边界,所以有时可能无法回收资源。
原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。
基本输入输出所使用的类的介绍:
FileInputStream和FileOutputStream (文件输入输出流)
以上两个是字节流
1) 结点流,可以对磁盘文件进行操作。
2) 要构造一个FileInputStream, 所关联的文件必须存在而且是可读的。
3) 要构造一个FileOutputStream而输出文件已经存在,则它将被覆盖。
FileInputStream infile = new FileInputStream("myfile.dat");
FIleOutputStream outfile = new FileOutputStream("results.dat");
FileOutputStream outfile = new FileOutputStream(“results.dat”,true);
参数为true时输出为添加,为false时为覆盖。
FileOutputStream类代码:(为什么能建文件)
Public FileOutputStream(String name){
This(name!=null?new File(String):null,false);
}
DataInputStream和DataOutputStream(字节流)
以上两个是过滤流。通过流来读写Java基本类,注意DataInputStream和DataOutputStream的方法是成对的。支持直接输出
输入各种数据类型。
writeBoolean(boolean b),readBoolean() ------以1bit数据传送
writeByte(int),readInt()------以1 byte数据传送
writeBytes(String s),readLine() (已过时方法)将字符串按字节顺序写出到基础输出流中以byte序列数据传送
writeChar(int v),readChar()――――――以2 byte
writeChars(String s),readChar()-------------以2 byte序列
writeDouble(double d),readDouble() -------以8 byte
writeInt(int v),readInt()
writeLong(long l),readLong()
writeShort(short s),readShort()
writeUTF(String),readUTF()-----------能输出中文!
注意:使用DataOutputStream/DataInputStream时,要注意写入顺序和读取顺序相同,否则会将没有分割写入的信息分
割不正确而读取出错误的数据。
分享到:
相关推荐
在“Java 第1章 了解java含源代码”中,我们将会探讨Java的基础知识,包括它的历史、特性、语法以及如何阅读和理解Java源代码。 1. **Java的历史**:Java的诞生源于C++,由James Gosling领导的团队开发,旨在创造一...
Java入门的基础资料,了解Java 语言 ; 了解Java 程序的类型 ; 掌握Java 程序运行环境的配置 ; 理解Java 虚拟机 (JVM); 了解Java的特点
了解Java 语言 了解Java 程序的类型 掌握Java 程序运行环境的配置 理解Java 虚拟机 (JVM) 了解Java的特点
Java简介及开发环境安装 Java是一种广泛使用的高级编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布。它设计的初衷是实现“一次编写,到处运行”的跨平台能力,通过Java虚拟机(JVM)...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
Java简介与发展史 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年发布。它以其“一次编写,到处运行”(Write Once, Run Anywhere)的理念而闻名,因为它...
首先,我们需要了解二十四节气的基本概念和计算原理。二十四节气按照时间顺序分为立春、雨水、惊蛰、春分、清明、谷雨、立夏、小满、芒种、夏至、小暑、大暑、立秋、处暑、白露、秋分、寒露、霜降、立冬、小雪、大雪...
Java面试通常涵盖多个...并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。
书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java虚拟机...
14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合...
程序设计语言 了解Java平台特性 了解Java集成开发环境 使用Eclipse开发Java应用 了解Java程序结构组成 常见问题
Java 汇总学习简介 Java 作为一种广泛使用的高级编程语言,其学习涵盖了许多方面。在深入探讨之前,我们先来了解一下 Java 的基本课程,包括 SL110、SL275 和 SL285,这些课程通常由 SUN 公司提供,旨在帮助初学者...
"java24hours_source" 是一个与Java编程相关的学习资源包,主要涵盖了为期24小时的Java学习课程的源代码。这个压缩包很可能是为了帮助初学者或有经验的开发者深入理解Java语言的核心概念和实战技巧。从标签来看,...
这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...
Java语言的基本语法是学习Java的第一步,了解Java语言的基本语法可以帮助开发者更好地掌握Java语言。 2. Java面向对象编程:Java语言支持面向对象编程(OOP),它可以模拟现实世界中的对象和关系。面向对象编程的...
了解Java的应用。 考试内容: 一、 Java语言的特点和实现机制 二、 Java体系结构 1. JDK目录结构。 2. Java的API结构。 3. 开发环境设置。 4. Java程序结构。 三、 Java语言中面向对象的特性。 1. 面向对象编程的...
它包含了Java编译器(javac)、Java解释器(java)、Java文档生成器(javadoc)以及各种实用工具,如jar打包工具等。通过JDK,开发者可以编写、编译、运行和调试Java应用程序。 【IDEA(IntelliJ IDEA)】 ...
在深入学习Java的过程中,了解Java虚拟机(JVM)的工作原理也很关键。JVM负责解释和执行Java字节码,并执行垃圾收集,自动管理内存。Java的异常处理机制保证了程序在遇到错误时能有序地处理,而Java Foundation ...
Java 二十四点程序是一款基于图形用户界面(GUI)的应用程序,设计用于解决经典的数学游戏——24点。这个游戏的目标是通过加、减、乘、除四种基本运算,使得四个给定的1到13之间的数字组合的结果恰好等于24。程序的...