黑马程序员--IO输入与输出

原创 2012年03月23日 22:19:31

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

1:定义了一些与平台无关的方法来操纵文件例如:创建文件,删除文件和重命名文件

 

Java中的目录被当作一种特殊的文件使用,list方法可以返回目录的素偶有字目录和文件名。

例子:

判断某个文件是否存在,存在删除,不存在则创建

RandomAccessFile类类提供了众多的文件访问方法

RandomAccessFile“类支持随机访问“方式

多线程下载也是用这个类,第一个用户下载1-2k,第二3-4k

最后客户端把这些所下载的内容组合成为一个客户端程序

RandomAccessFile“类在随机(相对而言)读写等长记录格式的文件时有很大的优势    

 RandomAccessFile 类仅限与操作文件,不能访问其他的IO设备,如网络,内存映像等

两种构造方法:

New RandomAccessFile(f,”rw”)//读写方式

New RandomAccessFiel(f,”r”)//只读方式

编程实例:

往文件中写入三个员工的信息,每个员工含有姓名和年龄两个字段,然后按照第二,第一,第三的先后顺序读出于员工的信息。

构造函数是没有返回类型的。 

 

 理解流的概念:

1流是字节序列的抽象概念。

2文件是有数的静态存储形式,而流是指数据传输时的形态。

(看不到数据流写入的形态,但是可以取到)

3:流分为两大类:节点流和过滤流(处理流类)

InputStream 程序可以从中连续读取字节的对象叫输入流,在java中。用

Inputstream 类中描述所有输入流的抽象概念。

inputStream类的方法:

int read()

(如果碰到流的截出处返回的值是-1,如果碰到的是没有截出,又没有数据可读、

那么int read()即将阻塞,运行程序。,指导流中有新的数据可读)

二进制形式为11111111的数据,以byte类型表示为-1,以int类型表示为255

 

 

 int

read(byte[] b)
          将最多 b.length 个数据字节从此文件读入 byte 数组。

将最多b.length个数据字节从此文件读入 byte数组。在至少一个输入字节可用前,此方法一直阻塞

 

Int  read(byte[] b, int off, int len)

将最多len个数据字节从此文件读入 byte数组。

Long skip long n

Int available ()

Void mark (int readlimit)(用于包装类的方法)

 Void reset()(mark配合使用)

Boolean markSupported ()

返回当前的流对象是否支持 mark  reset操作

void close()

 

OutputStream

 

程序可以向其中连续写入字节的独享叫输出流,在java中,用OutputStream类来描述所有的输出流的抽象概念。

OutputStream类的方法:

void write(int b ) write方法调用可以直接使用表达式,不用强制转换

void writebyte[] b b中所有的字节内容都写到输出流内容中

void write (byte [] b,int off,  int len )

void flush() 用于将内存反冲驱动的内容测底的清空,并且输出到io设备中

void close()

 

网络服务随机出现问题的概率比较多,执行的过程,

 

005  FileInputStreamFileOutputStream

FileInputStream FileOutputStream分别用来创建磁盘文件的输入流和输出流对象,通过他们的构造函数来指定文件路径和文件名

创建FileInputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容将被覆盖清除。

对于一个磁盘文件创建FileInputStream对象的两种方式:

1FileInputStream inOne = new FileInputStream”hello.test”;//文件的路径名直接传递

2: File f =  new  File(“hellon.test”)

FileInputStream  inTwo = new FileInputStreamf);

 

创建FileOutputStream实例对象时,还可以指定还不存在的文件名,不能指定一个已被其他程序打开了的文件

思考:要将A文件的内容写入B文件,在代码程序中是输出类对象海华丝输入类对象来连接A文件饼完成对A文件的操作呢??

 

输入类来读取a文件中的内容,创造一个输出类把内容写入到b文件

编程举例:

 FileOutputStream类像文件中写入一个字符串,然后用FileInputStream读出写入的内容。

 

定义一个字节数组

byte []  buf = new byte [1024];

转换字符串对象就是创建一个字符串,

 

read 方法不能直接去读一个字符串,因为read不知道在读到什么样的情况下才算一个字符串的结束,

ReaderWriter

1ReaderWrite类是所有字符串流类的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据。(在字节中和FileInputStreamFileOutputStream的作用相似)

2:二进制文件和文本文件的区别

编程举例:FileWriter类向文件中写入一个字符串,然后用FileReader读出写入的内容。

 

PioedWrite 和PipedReader类

使用管道流类,可以实现各个程序模块之间的松偶合通信(有

强内聚,弱偶尔的特点)

 

 ByteArrayInputStream 与ByteArrayOutputStream 类

ByteArrayInputStream 与ByteArrayOutputStream 类用于以IO流的方式来完成对字节数组内容的读写,来支持类似内存虚拟文件或者内存映像文件的功能。

ByteArrayInputStream 的两个构造函数:

ByteArrayInputStream(byte[] buf)使用字节数组中的所有数据

ByteArrayInputStream(byte[] buf,int offset,int length)

 

ByteArrayOutputStream的两个构造函数

ByteArryOutputStream()创建一个32个字节反冲区

ByteArrayOutputStream(int)根据大小创建一个适合的反冲区

 

编写一个函数,把输入流中所有英文字母变成大写字母,然后将结果写入到一个输出流对象,用这个函数可来将一个字符串中的所有字符转化成大写(11806 02_06)

 

重视IO程序代码的复用

System.in 连接到键盘,是InputStream类型的实例对象。System.out连接到显示器是PrintStream类的实例对象。

 

不管各种底层物理设备用什么方式实现数据的终止点,InputStreamread方法重视返回-1来表示输入流的结束。

//程序从文件中读取

 

 

Unicode编码     UTF-8编码   uTf-16编码

 

02_11过滤流与包装类

包装类的概念与作用:

BufferedInputStream BufferedOutputStream 往文件中读取或者写入某些数据

DataInputStreamDataOutputStream

PrintStream

ObjectInputStreamObjectOutputStream

字节流与字符流的转换

例子:通过FileOutputStream对象讲一个浮点小数写入到文件中,有困难把,能否通过FileOutputStream对象直接将一个整数写入到文件中

 

 传递一个FileOutputStream输出流对象给DataOutputStream实例对象的用于写入浮点小数的方法。

DataOutputStream饼没有对应到任何具体的流设备,一定要给它传递一个对应任何具体流设备的输出对象,完成类似DataOutputStream功能的类就是一个包装类,也叫过滤流或者处理流。

 

DataOutputStream包装类的构造函数语法:

Public DataOutputStream(OutputStream out)

 

DataOutputStream的部分方法列表:

Public final void writeBooleanboolean v

 

缓冲流为I/O增加了内存缓冲区,增加缓冲区目的:

允许java程序一次不止操作一个字节,提高了程序的性能。

有了缓冲区,使得在流上执行Skipmarkreset方法都成为可能

DataInputStreamDataOutputStream

DataInputStream提供了3个写入字符串的方法

Public final void writeBytes(String s)

Public final void writeChars(String s)

Public final void writeUTF(String s)向目标设备写入字符串的长度而其他上面两个没有

关闭流栈中的最上层的流独享,将会自动关闭流栈中所有底层的流对象。

 

DataOutputStream

 

BufferedInputStream BufferedOutputStreamjava提供的两个缓冲区包装类,不管底层是否使用了缓冲区,这两个类在自己的实力对象中创建缓冲区。

底层缓冲区是一下子创建很多,然后又一下子使用很多

BufferedInputStream的两个构造函数

BufferedInputStream (InputStream in)(创建32个字节缓冲区大小)

BufferedInputStream (InputStream in ,int size)

BufferedOutputStream类的两个构造函数(主要是对输出流进行反冲区包装,提高反冲区性能)

BufferedOutputStreamOutputStream out)(创建500个字节的反冲区域)

 BufferedOutputStreamOutputStream out,int size)根据反冲区大小来创建字节

 

BufferedReaderReadLne方法可以一次读取一行文本,BufferedWrite newLine方法可以向字符流中写入不同操作系统下的换行符

 

PrintStream

提供了一系列的printprintln方法,可以将基本数据类型的数据格式转化成为字符串输出。

 

格式化输出:就是按照字符串的格式输出

PrintStream 3个构造函数

PrintStreamOutPutStream out

PrintStream OutputStream outboolean autoflush

PrintStream OutputStream outboolean autoflushString encoding

 

ObjectInputStreamObjectOutputStream

ObjectInputStream ObjectOutputStream类这两个包装类,用于从底层输入流中读取对象的数据类型和将对象类型的数据写入到底层输出流。

 

ObjectInputStream ObjectOutputStream类所读的对象必须实现了Serializable接口。对象中的transienstatic类型的成员变量不会被读取和写入。(Serializable接口没有任何方法)

一个可以被序列华的MyClass类的定义

          Public class MyClass  implements Serializable {

         Public transient Thread t;

         Private String customerID;

         Private int total;

}

 

  能不能找到一种简单的方恨死来读取键盘上输入的一行字符,如何找??

  InputStreamRader OutputStreamWriter,是用于将字节流转换成字符串流来读写的两个类

 

2-14java程序和其他进程的数据通信

 

 02-15字节输入流                                       

最后linenumber过时。

 
字符输入流类

字符输出流类

Decorator 设计模式

在程序中,用一个对象包装另外的一个对象,这是一种被称为Decorator的设计模式

 

android培训java培训、期待与您交流! ----------------------
包装类的概念与作用:

OutputStream作为DataOutputStream输出类的对象类型

public DataOutputStream(OutputStream out)

BufferedReader(Reader in)
          
创建一个使用默认大小输入缓冲区的缓冲字符输入流。

 

BufferedReader(Reader in, int sz)
          
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
android培训java培训、期待与您交流! ----------------------

黑马程序员前端与移动开发学院2.0课程震撼来袭!

随着移动互联网深入发展,大前端时代的前端开发工程师在公司中的地位逐渐上升。前端工程师也摆脱了只是写写HTML标签、CSS样式、写写简单的JS效果的时代。大前端时代的前端工程师要求既能掌握基本的设计图的...
  • itcast_cn
  • itcast_cn
  • 2016年11月04日 11:15
  • 1461

黑马程序员—黑马的学习环境没有亲身经历的人是很难体会的!!!

文章来源:黑马程序员,黑马论坛     公元2013年1月10号我拖着沉重的行李箱和对未来的憧憬来到了黑马,公元2013年6月7号我怀抱着满满的知识和对老师的不舍离开了黑马。到现在离开黑马也有一个...
  • heima_28
  • heima_28
  • 2014年08月26日 15:16
  • 1390

黑马程序员:从零基础到精通的前端学习路线

随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才。很多同学,包括以前做UI的、Java的、或者对于IT完全零基础的同学都想学习前端。下图是网上流传甚广的一张前端学习思维导图,很多初学者...
  • itcast_cn
  • itcast_cn
  • 2016年07月29日 14:46
  • 5102

黑马程序员------IO流(No.2)(字节流、InputStream、OutputStream、转换流、改变输入输出设备)

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------    字节流 InputStre...
  • HelloXiaobi
  • HelloXiaobi
  • 2013年09月20日 14:32
  • 1095

黑马程序员 —— Java高级视频_IO输入与输出(第十九天)2

------- android培训、java培训、期待与您交流! ---------- 十八    流操作规律1 上面学习了如果之多的流(其实后面的章节还有不少),那么到底...
  • Lin1i1y
  • Lin1i1y
  • 2015年02月02日 16:55
  • 465

黑马程序员训练营-----IO 输入输出流操作的规律

-------------------------------中关村黑马程序员---------------------------------------------                ...
  • FMFsunshine
  • FMFsunshine
  • 2015年07月23日 10:40
  • 187

黑马程序员——JAVA IO输入输出(一)

System:类中的方法和属性都是静态的。   out:标准输出,默认是控制台。    in:标准输入,默认是键盘。    Properties是Hashtable的子类,也就是Map集合的...
  • liu5583586
  • liu5583586
  • 2014年03月19日 21:06
  • 264

黑马程序员_输入输出流(IO)

Java输入输出------- android培训、java培训、期待与您交流! ----------(IO)和流的基本概念     输入输出(IO)是指程序与外部设备进行交互操作。如从键盘上读...
  • liliangyzq
  • liliangyzq
  • 2013年10月09日 23:46
  • 401

黑马程序员——JAVA IO输入输出(三)

File类  用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。同时File对象可以作为参数传递给流的构造函数。 File类常见方法: 1,创建。 boolean createNew...
  • liu5583586
  • liu5583586
  • 2014年03月22日 16:48
  • 266

黑马程序员 —— Java高级视频_IO输入与输出(第二十一天)

------- android培训、java培训、期待与您交流! ---------- 一    对象的序列化 1、什么是对象的序列化? 毕老师:“原来对象只能存...
  • Lin1i1y
  • Lin1i1y
  • 2015年02月02日 16:57
  • 1161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员--IO输入与输出
举报原因:
原因补充:

(最多只允许输入30个字)