一、File类
java提供了java.io.File类对目录和文件进行操作。主要的操作方法包括:路径字符串构造方法、isDirectory、isFile、createNewFile、list、getName、delete。
1)构造方法:一般可以通过传递字符串形式的文件路径的方式来创建File对象,其中的File并不会检查该目录或文件是否已经存在。(所以均要IOException)
2)isDirectory()和isFile()方法:用于检查该File对象所代表的是目录还是普通文件;
3)createNewFile()方法:创建新文件,采用File对象所存储的路径和文件名进行创建;
4)list()方法:用于目录,得到目录下所有的文件名,类型为字符串数组;
5)getName()方法:得到文件名,不包含它的路径;
6)delete()方法:删除文件
7)mkdir():创建目录
例如:
import java.io.File; import java.io.IOException; public class FileDirTest { public static void main(String[] args) { File dir=new File("F:/test");//创建dir目录对象 //判断是否存在 if(!dir.exists()) { //创建目录 dir.mkdir(); } //分别在test目录底下创建a、b、c三个目录 File file_a=new File(dir.getPath()+File.separator+"a"); if(!file_a.exists()) { file_a.mkdir(); } File file_b=new File(dir.getPath()+File.separator+"b"); if(!file_b.exists()) { file_b.mkdir(); } File file_c=new File(dir.getPath()+File.separator+"c"); if(!file_c.exists()) { file_c.mkdir(); } //创建文件对象file File file=new File(dir.getPath()+File.separator+"a.txt"); //判断它是否已经存在 if(!file.exists()) { try { file.createNewFile();//创建新文件a.txt } catch (IOException e) { System.out.println("创建文件失败"); } } if(dir.isDirectory())//判断它是否为目录 { //调用list()方法获取它的所有文件 String [] files=dir.list(); //遍历文件 for(String fileName:files) { //用目录和文件名生成File对象 File f=new File(dir.getPath()+File.separator+fileName); //进行分类打印 if(f.isFile()) { System.out.println("file:"+f.getName()); } else if(f.isDirectory()) { System.out.println("dir:"+f.getName()); } } } } }
例子2:
如何复制一个文件?
步骤:
1)用被复制文件的路径创建一个InputSteam对象
2)用复制文件的新路径创建一个OutputSteam对象。
3)用read()方法循环把数据读出到一个byte数组中,直到读出数据的长度小于0.
4)用write()方法把byte数组中的字节写入输出流。
5)最后关闭输入流和输出流
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) throws IOException { //生成输入文件的输入流对象 FileInputStream fin=new FileInputStream("F:/test/a.txt"); //生成输出文件的输出流对象 FileOutputStream fout=new FileOutputStream("F:/test/c.txt"); //定义一个用固暂存数据的byte数组 byte [] buff=new byte[256]; //每次读取数据的长度 int len=0; //循环读取到buff中,如果文件到底,则读取数据的长度小于0 while((len=fin.read(buff))>0) { //把数据一次写进输出文件中 fout.write(buff,0,len); } //关闭输入流 fin.close(); //关闭输出流 fout.close(); } }
例题3:
如何使用随机存取文件RandomAccessFile类
InputStream 和OutputStream都只能单方面的读和写文件的内容,这里介绍下随机存取文件。步骤如下:
1)用length()方法获取文件的内容长度。
2)用seek()方法随机的到达任何需要存取数据的地方
3)调用read()方法获取当前位置的数据,用write()方法写入数据。
4)完成需要以后,关闭文件的打开close()
import java.io.IOException; import java.io.RandomAccessFile; public class RandomFileTest { public static void main(String[] args) throws IOException { //创建随机读取文件对象 RandomAccessFile file=new RandomAccessFile("f:/test/a.txt","rw"); //遍历file的字节数据 for(int i=0;i<file.length();i++) { //read()方法读取一个字节 byte b=(byte)file.read(); //转换为char型 char c=(char)b; if(c=='a') { //把指针又恢复到之前的地方 file.seek(i); //写入新的字符c file.write('c'); } } file.close(); } } //a===》c
二、流(Stream)
字节流的处理方式:字节流处理的是计算机最基本的单位byte,它可以处理任何数据格式的数据。主要的操作对象就是byte数组,通过read()和write()方法把byte数组中的数据写入或读出。(如复制文件)
字符流的处理方式:字符流是有字节流包装而来,它的输入和输出流类型包括StringReader和StringWriter、BufferedReader和BufferedWriter。字符流API的基本使用思路有以下步骤:
1)获取输入或输出流对象。可以从File得到,也可以从网络或者其他地方得到。
2)根据特定的字符格式创建InputStreamReader或InputStreamWriter对象
3)使用read()或者readLine()方法,得到数据。或使用writer或print()方法进行字符输出。
4)最后关闭reader或writer
import java.io.*; public class ReaderTest { public static void main(String[] args) throws IOException { //获取输入流 InputStream in =new FileInputStream("f:/test/a.txt"); //得到InputStreamReader对象 InputStreamReader isr=new InputStreamReader(in,"GBK"); //创建reader对象 BufferedReader br=new BufferedReader(isr); //创建StringBuffer对象,临时保存字符内容 StringBuffer sb=new StringBuffer(); String str=null; //循环读取一行数据 while((str=br.readLine())!=null) { //加入字符 sb.append(str); } System.out.println("a.txt content :"+sb); //关闭流 br.close(); } }
每天一点点希望对大家有利~~