您的位置:首页 > 编程语言 > Java开发

Java基础知识 十二 IO流 (上)

2015-11-09 22:18 441 查看
File

(1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件

(2)构造方法

A:File file = newFile("e:\\demo\\a.txt");

B:File file = newFile("e:\\demo","a.txt");

C:File file = newFile("e:\\demo");

File file2 =new File(file,"a.txt");

(3)File类的功能

A:创建功能

publicboolean createNewFile() 创建文件,如果存在了就不创建了

publicbooleanmkdir() 创建文件夹,如果存在了就不创建了

publicbooleanmkdirs() 创建父子类型的文件夹,如果父文件夹不存在会自动创建,如果存在就不创建了

B:删除功能

publicbooleandelete() 删除(要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹)

C:重命名功能

publicboolean renameTo(Filedest) 注意:如果路径名相同,就是改名。

如果路径名不同,就是改名并剪切。

D:判断功能

publicboolean isDirectory() 判断是否是文件夹

publicboolean isFile() 是否是文件

publicboolean exists() 判断是否存在

publicboolean canRead() 能否读取

publicboolean canWrite() 能否改写

publicboolean isHidden() 是否影藏

E:获取功能

基本获取功能

public StringgetAbsolutePath() 获取绝对路径

public StringgetPath() 获取相对路径

public StringgetName() 获取名字

public longlength() 获取长度 (字节长度)

public longlastModified() 获取最后的修改日期(毫秒值)

高级获取功能

publicString[] list() 获取指定目录下的所有文件或者文件夹的 名称 数组

public File[]listFiles() 获取指定目录下的所有文件或者文件夹的 File 数组

G:过滤器功能

publicString[] list(FilenameFilterfilter) //获取的是字符串类型的文件名

public File[]listFiles(FilenameFilterfilter) //获取的是对象类型的文件名

IO流

(1)IO用于在设备间进行数据传输的操作

(2)分类:

A:流向

输入流 读取数据

输出流 写出数据

B:数据类型

字节流

字节输入流

字节输出流

字符流

字符输入流

字符输出流

注意:

a:如果我们没有明确说明按照什么分,默认按照数据类型分。

b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。

(3)FileOutputStream写出数据

A:操作步骤

a:创建字节输出流对象

b:调用write()方法

c:释放资源

B:代码体现:

FileOutputStreamfos = new FileOutputStream("fos.txt");

fos.write("hello".getBytes());

fos.close();

C:要注意的问题?

a:创建字节输出流对象做了几件事情?

A:创建字节输入流对象

B:调用read()方法读取数据,并把数据显示在控制台

C:释放资源

b:为什么要close()?

A:让流对象变成垃圾,这样就可以被垃圾回收器回收了

B:通知系统去释放跟该文件相关的资源

c:如何实现数据的换行?

windows:\r\n

linux:\n

Mac:\r

d:如何实现数据的追加写入?

true

(4)FileInputStream读取数据

A:操作步骤

a:创建字节输入流对象

b:调用read()方法

c:释放资源

B:代码体现:

FileInputStreamfis = new FileInputStream("fos.txt");

//方式1

int by =0;

while((by=fis.read())!=-1){

System.out.print((char)by);

}

//方式2

byte[] bys =new byte[1024];

int len =0;

while((len=fis.read(bys))!=-1){

System.out.print(newString(bys,0,len));

}

fis.close();

字符流

(1)字节流操作中文数据不是特别的方便,所以就出现了转换流。

转换流的作用就是把字节流转换字符流来使用。

(2)转换流其实是一个字符流

字符流 = 字节流 +编码表

(3)编码表

A:就是由字符和对应的数值组成的一张表

B:常见的编码表

ASCII

ISO-8859-1

GB2312

GBK

GB18030

UTF-8

C:字符串中的编码问题

编码

String-- byte[]

解码

byte[]-- String

(4)IO流中的编码问题

A:OutputStreamWriter

OutputStreamWriter(OutputStreamos):默认编码,GBK

OutputStreamWriter(OutputStreamos,String charsetName):指定编码。

B:InputStreamReader

InputStreamReader(InputStreamis):默认编码,GBK

InputStreamReader(InputStreamis,String charsetName):指定编码

C:编码问题其实很简单

编码只要一致即可

(5)字符流

Reader

|--InputStreamReader

|--FileReader

|--BufferedReader

Writer

|--OutputStreamWriter

|--FileWriter

|--BufferedWriter
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: