您的位置:首页 > 职场人生

黑马程序员_IO流学习笔记

2014-07-16 17:26 211 查看
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

一、文件类

File类,如果是一个文件,它表示文件;如果是多个文件它表示目录。

常用API

createNewFile
()
,创建一个空的文件。


delete
()
,删除文件。


exists
()
,判断文件或目录是否存在。


getAbsolutePath
()
,获取文件的绝对路径。


getName
()
,获取文件名称,包括文件扩展名。


listFiles
()
,如果是目录,则获取目录下所有文件。


mkdir
()
,新建目录。


isDirectory
()
,判断该文件对象是否为目录。


isFile
()
,判断该文件对象是否为文件。


例如:


package demo.test.io;

import java.io.File;

import java.io.IOException;

publicclass FileDemo {

publicstaticvoid main(String[] args) throws IOException{

Filedir=new File("E:\\test");

System.out.println("是否为目录:"+dir.isDirectory());

System.out.println("是否为文件:"+dir.isFile());

FilenewDir=new File("E:\\test\\aa");

newDir.createNewFile();

System.out.println("目录是否创建成功:"+newDir.exists());

System.out.println("目录是否删除成功:"+newDir.delete());

FilenewFile=new File("E:\\test\\a.txt");

newFile.createNewFile();

System.out.println("文件是否创建成功:"+newFile.exists());

System.out.println("文件是否删除成功:"+newFile.delete());

}

}


二、IO流

1.定义

I/O流是对输入、输出设备之间数据传输的抽象。它代表任何有能力产出数据的数据源对象或者有能力接收数据的接收端对象。

2.四个基本类

Java类库中的I/O类分为输入和输出两部分,共有四个基类。

输入流的基本类为:

Inputstream或Reader,里面都含有read()基本方法,用于读取单个字节或字节数组。可理解为往输入流里面读数据。

输出流的基本类为:

Outputstream或Writer,里面都含有write()基本方法,用于写单个字节或字节数组。可理解为往输出流里面写数据。

按流的类型的不同又分为字节流和字符流,字节流一般读取的是二进制文件如图片、视频、音频;而字符流一般读取的是文本文件,它包含unicode字符集,如txt。上述基本类中Inputstream、Outputstream操作的是字节流;Reader、Writer操作的是字符流。

样例:

package demo.test.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IoDemo {

public static void main(String[] args) throws IOException {
/**
* 演示字符流
*/
// 文本文件
File fc = new File("F:\\用户名和密码.txt");
FileReader fr = new FileReader(fc);
BufferedReader br = new BufferedReader(fr);

File newFC = new File("F:\\aa.txt");
if (!newFC.exists()) {
newFC.createNewFile();
}

FileWriter fw = new FileWriter(newFC);
BufferedWriter bw = new BufferedWriter(fw);
while (br.read() != -1) {
String str = br.readLine();
bw.write(str);
bw.flush();
}

fw.close();
fr.close();

if (fw != null) {
fw = null;
}
if (fr != null) {
fr = null;
}

/**
* 演示字节流
*/
File fb = new File("F:\\登陆页面.png");
FileInputStream fis = new FileInputStream(fb);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buf = new byte[1024];
int len = 0;

File newFB = new File("F:\\aa.png");
FileOutputStream fos = new FileOutputStream(newFB, true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
while ((len = fis.read(buf)) != -1) {
bos.write(buf, 0, len);
bos.flush();
}
bos.close();
fos.close();
bis.close();
fis.close();

if (fis != null) {
fis = null;
}
if (fos != null) {
fos = null;
}
}
}


3.字符流和字节流的相互转化

有时我们必须把来自于“字节”层次结构中的类和“字符”层次结构中的类结合起来使用。为了实现这个目的,要用到“适配器(adapter)”类:InputStreamReader可以把InputStream转换成Reader,而OutputStreamWriter可以把OutputStream转换成Writer。

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://www.itheima.com" target="blank">www.itheima.com</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: