java IO流(二)

来源:互联网 发布:怎么开淘宝网店要钱吗 编辑:程序博客网 时间:2024/05/17 07:48


转换流

java中的转换流:InputStreamReader,OutputStreamWriter
转换流的由来:
字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用
字节流中的数据都是字符时,转成字符流操作更高效。

标准输入输出流

1、System类中的字段:in,out。
2、它们各代表了系统标准的输入和输出设备。
3、默认输入设备是键盘,输出设备是显示器。
4、System.in的类型是InputStream.
5、System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.

File类

用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。同时File对象可以作为参数传递给流的构造函数。

常见方法

1、创建:
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。

boolean mkdir():创建文件夹。

boolean mkdirs():创建多级文件夹。
2、删除。
boolean delete()删除失败返回false。如果文件正在被使用,则删除不了返回falsel。void deleteOnExit();在程序退出时删除指定文件。
3、判断:
boolean exists() :文件是否存在。     
isFile(): 判别文件的类型。
isDirectory();检查对象是否是文件夹返回值是boolean类型如果是则返回true否则返回false调用方法:对像.isDirectory() 无需指定参数,记住在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在。 通过exists判断。

isHidden(); 测试此抽象路径名指定的文件是否是一个隐藏文件。   

isAbsolute(); 判断此路径是否为绝对的。

4、获取信息。
getName(): 返回由此抽象路径名表示的文件或目录的名称。   

getPath(): 将此抽象路径名转换为一个路径名字符串。  

getParent(): 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

getAbsolutePath() 返回此抽象路径名的绝对路径名形式。 

long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。   

long length() 返回由此抽象路径名表示的文件的长度。


函数递归

函数自身调用自身的表现形式,或者编程手法,称为递归

递归要注意:

1)限定条件。

2)要注意递归的次数。尽量避免内存溢出。

应用场景:
当某一功能要重复使用时。



IO包中的其他流

打印流
1、该流提供了打印方法,可以将各种数据类型的数据都原样打印。同时提供了两种方法,字节打印流和字符打印流
2、字节打印流:PrintStream
构造函数可以接收的参数类型:

file对象:File

字符串路径:String

字节输出流:OutputStream
3、字符打印流:PrintWriter
构造函数可以接收的参数类型:

file对象:File

字符串路径:String

字节输出流:OutputStream

字符输出流:Writer

序列流

SequencelnputStream——可以对于多个流进行合并。

    打印流和序列流的操作对象是ObjectlnputStream与ObjectOutputStream,被操作的对象需要实现Serializable(标记接口)


管道流:PipedInputStream和PipedOutputStream,输入输出可以直接进行连接,通过结合线程使用。


操作基本数据类型:DataInputStream与DataOutputStream

操作字节数组:ByteArrayInputStream与ByteArrayOutputStream

操作字符数组:CharArrayReader与CharArrayWrite

操作字符串:StringReader与StringWriter

Properties类

Properties是hashtable的子类。也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。是集合中和IO技术相结合的集合容器。该对象的特点:可以用于键值对形式的配置文件。那么在加载数据时,需要数据有固定格式:键=值。


字符编码

1、字符流的出现为了方便操作字符。
2、更重要是的加入了编码转换。
3、通过子类转换流来完成。
InputStreamReader
OutputStreamWriter
4、在两个对象进行构造的时候可以加入字符集

编码表的由来:计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。这就是编码表。

常见的编码表

ASCII:美国标准信息交换码。 用一个字节的7位可以表示。
ISO8859-1: 拉丁码表。欧洲码表用一个字节的8位表示。
GB2312: 中国的中文编码表。
GBK: 中国的中文编码表升级,融合了更多的中文文字符号。
Unicode: 国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode
UTF-8: 最多用三个字节来表示一个字符。





0 0
原创粉丝点击