一、使用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();