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

黑马程序员_IO流

2012-05-17 10:50 225 查看
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
1.IO流用来处理设备之间的数据传输。

2.java对数据的操作是通过流的方式。

3.java用于操作流的对象都在IO包中

4.流按操作数据分为两种:字节流与字符流。

其中字符流可以选择用什么编码

5.流按流向分为:输入流,输出流。

IO流常用类型

1.字节流的抽象基类:InputStream,OutputStream

2.字符流的抽象基类:Reader,Writer

3.注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

eg:InputStream的子类FileInputStream。

Reader的子类FileReader。

4.数据最常见的体现形式是:文件。

5.IO子类对象的文件名中:前半部分表示该流对象的的功能,后半部分为父类名。

一:FileWriter类

1.创建一个FileWriter类的对象,该对象被初始化必须要明确被操作的文件。而且该文件会被创建到指 定的目录下

eg:FileWriter fw=new FileWriter("demo.txt");

如果该目录下原来存在一个名为demo的txt文件,则会被覆盖掉。即上面的语句创建了一个新文件。

2.flush():刷新流对象中的缓冲中的数据,将数据刷新到目的地中。

3.close(): 关闭流资源,但关闭前会刷新一次内部的缓冲中的数据,将数据刷新到目的地。

和flush区别:flush刷新后,可以继续使用流,close刷新后,会将流关闭。

4.FileWriter类的对象最后必须调用close()方法来刷新缓冲流。

5.凡是与设备打交道的流都会涉及到IO异常。

6.finally里面装的是释放的资源(即关闭的流资源)。

7.文件找不到异常是IO异常的一部分。

8.public static void main(String[] args)

{

FileWriter fw=null; //在外面建立应用,在try里进行初始化。

try

{

fw=new FileWriter("demo.txt");

fw.write("abcdefg");

fw.close();

}

catch (IOException e)

{

System.out.println(e.toString());

}

finally

{

try

{

if(fw!=null) //File中一定要对关闭流的对象进行不为空的判断。

fw.close();

}

catch (IOException e)

{

System.out.println(e.toString());

}

}

}

二:FileReader类

1.FileReader fr=new FileReader("demo.txt");

//创建一个文件读取流对象,和制定名称的文件相关联

要保证该文件是已经存在的,如果不存在,会发生异常

int ch=fr.read())!=-1 //调用读取流对象的read方法:一次读一个字符,而且会自动往下读,

-1表示读到了该文件的末尾处。

2.FileReader fr=new FileReader("demo.txt");

char [] buf=new char[1024]; //定义一个字符数组,用于存储读到的字符

while(num=fr.read(buf))!=-1) //该read(char [])返回的是读到的字符个数

3.FileWriter fw=new FileWriter("demo.txt",true);

//传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处进行数据的续写。

fw.write("nihao\r\nxiexie");

//在windows中write方法写出的数据要换行输出,必须加上\r\n不能只是\n。

4.//打印一个java文件的原理

import java.io.*;

class FileReaderTest

{

public static void main(String[] args) throws IOException

{

FileReader fr=new FileReader("Datedemo.java");

char [] buf=new char[1024];

int num=0;

while((num=fr.read(buf))!=-1)

{

System.out.print(new String(buf,0,num));

}

fr.close();

}

}

三:将C盘的一个文件复制到D盘

复制的原理:

其实就是将C盘下的文件数据存储到D盘的一个文件中。

步骤:

1.在D盘创建一个文件,用于存储C盘文件中的数据。

2.定义读取流和C盘文件关联。

3.通过不断的读写完成数据存储。

4.关闭资源。

四:复制的两种方式:

一:边读边写

public static void copy_1() throws IOException

{

//创造目的地

FileWriter fw=new FileWriter("RuntimeDemo_copy.txt");

//与已有文件关联

FileReader fr=new FileReader("RuntimeDemo.java");

int ch=0;

while((ch=fr.read())!=-1)

{

fw.write(ch);

}

fw.close();

fr.close();

}

二:先读完后再写

public static void copy_2()

{

FileWriter fw=null;

FileReader fr=null;

try

{

fw=new FileWriter("RuntimeDemo_copy.txt");

fr=new FileReader("RuntimeDemo.java");

char [] buf=new char[1024];

int len=0;

while((len=fr.read(buf))!=-1)

{

fw.write(buf,0,len);

}

}

catch (IOException e)

{

throw new RuntimeException("读写失败");

}

finally

{

if(fr!=null)

try

{

fr.close();

}

catch (IOException e)

{

e.printStackTrace();

}

if(fw!=null)

try

{

fw.close();

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: