一、使用io流操作文件

1.在java中,java.io包提供了一些接口和类,对文件进行了一些基本操作。

2.File类可以对文件和目录进行操作。它既可以表示文件,又可以表示目录。

3.FIle类的构造方法

方法

说明

File(String path)

指定文件的路径

File(String dir,String subpath)

在指定的文件夹中创建指定文件名的文件。

File(File parent,String subpath)

根据一个文件对象和一个字文件构建文件对象

File类的常用方法

方法

说明

boolean  exists()

测试文件是否存在

String  getAbsolutePath() 

返回此对象的绝对路径名

String  getParent()

返回此对象的上一级路径名

String getName()

返回此对象表示的文件的名称

boolean  delete()

删除此对象指定的问价

boolean isDrectory()

测试此File对象表示的是否是目录

boolean makdir()

创建一个目录,路径名由当前File对象指定

Boolean makdirs()

创建包括父目录的目录

feil.length()

获取文件或者目录的大小,单位为字节

二、java中的流

1.流是指一连串流动的字符。是以先进先出的方式发送和接收数据的通道。

2.读文件是值把文件中的数据读取到内存中。写文件是指把内存中的数据写到文件中。读写文件通过流来完成。

3.流分为输入流和输出流。

java中的输出流主要由OutputStream 和Write作为基类,输入流由InputStream和Reader作为基类。

4.输入流和输出流又分为字节流和字符流两种形式。

字节流是以字节为单位。字符流是Unicode字符为单位。

5.使用字节流读写文件

FileInputStream称为文件输入流,它是字节流InputStream抽象类的子类,它是将文件中的数据输入到内存中去,可以读取文本文件中的数据。

代码如下:

读取文本数据

//创建字节流对象
FileInputStream fis=new FileInputStream("C:/hello.txt");

int date=-1;


//循环读取数据,循环条件是只要读到数据,就输出,如果为-1就表示没读到
while((date=fis.read())!=-1){

    System.out.println(date);

}


//关闭流对象
fis.close();

写入文本数据:

FileOutputStream是文件输出流,它是OutputStream抽象类的子类,可以读取内存中的数据,写入到文件中。

//创建输出流对象,写入文本文件
//true表示在原文件数据后面追加数据
FileOutputStream  fos=new FileOutputStream("c:/win.txt",true);  

//字符串对象
String str="java是世界上最好的计算机语言";

byte b[]=str.getBytes();        //字节数组

//写入文件
fos.write(b);

//关闭流
fos.close();

6.使用字符流读取文件

使用FileReader读文件

//创建字符流读取关键对象
        FileReader fr=new FileReader("d:/zoo.txt");
        
        int data=-1;
        //创建字符数组
        char []ch=new char[1024];    

        //读取数据,整个字符数组
        System.out.println((char)data);

        while((data=fr.read(ch))!=-1) {
            System.out.print(ch);    //打印
        }
        
        //关闭流
        fr.close();

使用FileWrite写入文件

//创建字符流写入对象
		FileWriter fw=new FileWriter("d:/zoo.txt",true);	//true为在后面追加数据
		int data=-1;
		fw.write("学习java,html,c#");
		
		//关闭流
		fw.flush();
		fw.close();

使用BufferedReader读取文件和BufferedWriter写入文件,一般推荐使用这个流对象,读取写入文件效率高!!!

//写数据
	  //创建字符流写入对象,true在后面追加数据
	  FileWriter fw=new FileWriter("d:/zoo.txt", true);

	  //创建关键对象BufferedWrite缓冲流
	  BufferedWriter =new BufferedWriter(fw);
			
	//写入数据
	bw.write("厉害了我的国,666");
	bw.newLine();		//换行
	bw.write("javaSE");
			
    //刷新缓冲区
	fw.flush();
	bw.flush();
			
			
	 //读数据
     //创建读取流对象,
     FileReader fr=new FileReader("d:/zoo.txt");
     BufferedReader br=new BufferedReader(fr);
			
     String line=null;
	//一行一行读取,效率高
	while((line=br.readLine())!=null) {
		System.out.println(line);
	}
	//关闭读取流对象
	br.close();
    fr.close();
		
    //关闭写入流对象
    bw.close();
	fw.close();

三、读写二进制文件

二进制文件,有图片,calss文件,音频,视屏等文件。

利用DataInputStream类读取二进制文件,这里也要用到FIleInputStream类!

利用DataOutputStream类写入二进制文件,这里也要用到FileOutputStream类!

//创建读取二进制流对象
		DataInputStream dis=new DataInputStream(new FileInputStream("d:/xem.jfif"));
        //创建写入二进制流对象
        DataOutputStream dos=new DataOutputStream(new FileOutputStream("d:/pin.jfif"));
		
		
		//边读边写
		int data=-1;
		byte [] b=new byte[dis.available()];
         //循环读取数据,读一个写一个
		while((data=dis.read(b))!=-1) {   
			dos.write(b);		        //写入数据
		}
		
		//关闭流,先开的后关,后开的先关
		dos.close();
		dis.close();