黑马程序员_IO输入与输出
来源:互联网 发布:米尼步枪图片数据 编辑:程序博客网 时间:2024/05/24 15:42
---------------------- android培训、java培训、期待与您交流! ----------------------
今天刚收到基础测试通过的邮件,所以把前两天写的笔记汇总都贴上来。在java程序中,对于数据的输入和输出操作都以“流”(stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据。
1.File类
File 类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。
File类定义了一些与平台无关额方法来操纵文件,例如,创建、删除文件和重命名文件。
Java中的目录被当作一种特殊的文件使用,list方法可以返回目录中的所有子目录和文件名。
在Unix下的路径分隔符为/,在Dos下的路径分隔符为/,Java可以正确处理Unix和Dos路径的分隔符。
获取文件的各种属性的方法:
list()返回所有子目录和文件名
exists() 判断是否存在
delete()删除
creatNewFile() 创建新文件
getPath()获取路径
getParent()获取文件父目录
getAbsolutePath()获取文件的绝对路径
getName()获取文件名
canRead()判断文件是否可读
isDirectory()是否是父目录
laseModified() 修改时间 返回long型时间值 // new Date(file.lastModified()
2.RandomAccessFile类
1)RandomAccessFile类提供了众多的文件访问方式。
2)RandomAccessFile类支持“随机访问”方式。应用:多线程下载。每个线程下载的文件大小不同,且同时读取,从文件的不同位置开始读。
3)RandomAccessFile类在随机(相对顺序而言)读写等长记录格式(文件存储的信息是一条一条的记录,例如:日志文件、员工信息单等)的文件时有很大的优势。
4)RandomAccessFile类仅限于操作文件,不能访问其他IO设备,如网络,内存映像等。5)两种构造方法:
new RandomAccessFile(f, “nw”); //读写方式
new RandomAccessFile(f, “r”); //只读方式
方法:
skipBytes(字节数)跳到对应字节数
read(字节数)——返回值int类型
seek(字节数)绝对定位,定位到文章到第几个字节处
seekbyte(字节数)在原有定位字节基础上,跳转到对应的位置
close()关闭文件对象
read()读取数据
3.流的概念:
字节流 字符流输入流InputStreamReader输出流OutputStreamWriter
一、InputStream类:用于向程序中输入数据,数据单位(8bit)
InputStream类的方法:
int read() ——用于获取读到的字节数遇到流的结束,返回值-1,如果读不到数据会发生阻塞
int read(byte[] b)
int read(byte[] b,int off,int len)
long skip(long n)——用于包装类的流的跳转
int available()——返回当前输入流中可读的字节数,一般用于检查流中是否有数据可读取,
同时也可以避免流发生阻塞 (read()方法如果未读到数据则会发生阻塞)。
void mark(int readlimit)——在输入流中建立标记,在建立标记的位置开始计算最多还能读取多少字节的内容。
void reset()——和mark()方法配合使用,让其指针回到以前的标记处
boolean markSupported()—— 返回当前的流对象是否支持mark()和reset()操作
void close()——关闭流,释放与流相关的资源
有了垃圾回收器,为什么还要调用close方法:
垃圾回收期只能产生类对象,而InputStream在实例化后多产生系统的类。
二、OutputStream类也是抽象类,也没有对应到具体的流设备,只是描述流设备输出时的共性。
OutputStream类的方法:
void write(int b)——将整数字节最低字节流的内容写到数据当中
void write(byte[] b)
void write(byte[] b.int off,int len)
void flush()——用于将内存缓冲器的内容彻底的清空,并输出到目标IO设备当中
void close()——关闭输出流对象
三、FileInputStream类
创建的两种方式:
1)FileInputStream One = new FileInputStream("路径")
2)File f=new File("路径");FileInputStream Two = new FileInputStream(f);
FielOutputStream类——若文件已存在,则内容会覆盖。
PipedInputStream类PipedOutputStream类
用于在应用程序中创建通信管道通信。主要完成线程之间的通信。
ByteArrayInputStream与ByteArrayOutputStream类
用于以IO流的方式来完成对字节数组内容的读写
1、Sytstem.in 链接到键盘,是InputStream类型的实例对象。System.out 链接到显示器,是PrintStream类的实例对象。
2、不管各种底层屋里设备用什么方式实现数据的终止点,InputStream的read方法总是返回-1来表述输入流的结束
字符编码:
ASCII美国标准信息交换码 一个字节 说这些数字都在0-127之间。
unicode编码
ISO符号统一编码,称为unicode编码
占用两个字节,还保留两千多个数值没有用于字符编码
utf-8编码ascii码保持原样,仍然只占用一个字节,对于其他国家的字符,utf-8使用两个或三个字节来表示。
一字节表示:0xxxxxxx
二字节表示:110xxxxx 10xxxxxx
三字节表示:1110xxxx 10xxxxxx 10xxxxxx
优点:
1不出现ox00字节
2便于应用程序检测数据在传输过程中是否发生错误
3直接处理使用ascii码的英文文档
缺点:
某些字符用了三字符
utf-16编码
utf-16编码在unicode基础上进行了细节的扩充,增加了对unicode编码没有包括的字符的表示方式。
一个使用unicode编码的字符就是utf-16格式的
utf-16扩充的字符 占用四字节
处理流
1.数据流
DateOutputStream和DataInputStream提供往各种输出流对象中写入各种原始类型数据的方法。
2.缓冲流
bufferedInputStream和bufferedOutputStream
为I/O增加了内存缓冲区,具有两个目的:
1)允许java程序依次不只操作一个字节,提高的程序性能。2)有了缓冲区,使得流在执行上skip、mark、reset方法都成为可能。
BufferedReader和BufferedWrite类BufferedReader的readLine方法依次读取一行文本
BufferedWrite的newLine方法可以想字符流中写入不同操作系统下的换行符
程序——》DataOutputStream——》BufferedOutputStream——》FileOutStream——》文件
程序《——DataInputStream《——BufferedInputStream《——FileInputStream《——文件关闭流栈中的最上层流对象,将会自动关闭流栈中所有底层的流对象。
3.Print 输出流:
1)包括PrintStream 和PrintWriter
2)PrintStream 永远不会抛出 IOException
3)自动flush功能
setout():重新分配“标准”输出流。
4.ObjectInputStream类与ObjectOutputStream类
直接将Object写入或者写出,其读写的对象必须实现了Serializable接口(序列化)。对象中的transient和static类型的成员变量不会被读取和写入。
1)transient:透明的 可修饰成员变量 ,在序列化的时候不考虑 transient int k = 15
2)Serializable:标记型接口,如果想把某个类的对象序列化,必须实现Serializbale接口。……
class T implement Serializable{
int i = 9;
double d = 2.3;
transirent int k = 15;
}
……
5.转换流 InputStreamReader和OutputStreamWriter,是用于将字节流转换成字符流来读写的两个类.避免频繁的在字节间进行转换,最好不要直接使用inputstreamreader和outputStreamWriter读写数据,应尽量使用BufferedReader类包装inputstreamreader,用BufferedWriter类包装outputStreamWriter.
---------------------- android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
- 黑马程序员_IO输入与输出
- 黑马程序员Java培训、Android培训_IO输入与输出
- 黑马程序员_IO输入与输出(1)
- 黑马程序员_IO输入与输出(2)
- 黑马程序员_IO输入与输出之RandomAccessFile类
- 黑马程序员--java高级视频_io输入与输出
- 黑马程序员 —— Java高级视频_IO输入与输出(第十八天)1
- 黑马程序员 —— Java高级视频_IO输入与输出(第十八天)2
- 黑马程序员 —— Java高级视频_IO输入与输出(第十九天)1
- 黑马程序员 —— Java高级视频_IO输入与输出(第十九天)2
- 黑马程序员 —— Java高级视频_IO输入与输出(第二十天)
- 黑马程序员 —— Java高级视频_IO输入与输出(第二十一天)
- 黑马程序员--java IO输入与输出
- 黑马程序员之IO 输入与输出
- 黑马程序员--javaI/O输入与输出
- 黑马程序员_JavaIO输入与输出上
- 黑马程序员_JavaIO输入与输出下
- 黑马程序员--IO输入与输出
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件,用到ant.jar解决汉字乱码
- Android通过http协议POST传输方式
- 将常用的字符串资源化
- JAVA正则表达式 Pattern和Matcher
- [转]Ultra Fractal 5.04 破解版汉化包
- 黑马程序员_IO输入与输出
- uva 10361 Automatic Poetry
- Android 基本控件 之 SeekBar(一) 个性你的视图
- 初学xml感受
- c++头文件 引用顺序
- 在OGRE中使用CEGUI
- 2011-9-19 16:10:34
- url编码
- 你是否将自己的命运交由别人了