主要是针对文件查询,创建,删除,读取等操作的一些描述:

1、文件的基础操作:

  1.1、获取文件相关信息:

//  File file=new File("F:\\ciyu\\ciyu3.txt");
//  System.out.println(file.getName());//获取文件名称
//  System.out.println(file.getPath());//获取文件路径
//  System.out.println(file.getParent());//获取文件父目录
//  System.out.println(file.isAbsolute());//判断文件是否完整
//  System.out.println(file.exists());//判断文件是否存在
//  System.out.println(file.isFile());//判断是否是文件
//  System.out.println(file.isDirectory());//判断是否是目录
//  file.createNewFile();//创建新的文件
//  File file1=new File("F:\\ciyu");//读取某个目录下所有的文件名称
//  for(String s:file1.list()) {
//   System.out.println(s);
//  }
//  File file2=new File("F:\\ciyu\\test");//创建目录
//  if(file2.mkdir()) {
//   System.out.println("成功"); 
//  }
//  File file3=new File("F:\\ciyu\\test1");//创建多级目录
//  if(file3.mkdirs()) {
//   System.out.println("成功"); 
//  }
//  if(file3.delete()) {//删除文件或目录(不递归)在删除前需要删掉目录下的文件,正在使用的文件不能被删除,
//   System.out.println("success");
//  }else {
//   System.out.println("faild");
//  }
//  delfile(file3);
//		FileUtils.copyFile(file, file1,false);//复制文件到另一个文件,第三个参数为判断目标存在时是否覆盖
//		FileUtils.copyDirectory(file, file1,false);//复制目录下文件到另一个目录,第三个参数为判断目标存在时是否覆盖

     1.2、递归删除:

public static void delfile(File file) {//递归删除
   if(file.isDirectory()) {
  File[] listFiles = file.listFiles();
   for(File file1:listFiles) {
    delfile(file1);
   }
   file.delete();
   }
   file.delete();
  }

2、文件的读写操作(分为字节流和字符流两种方式)

字节流:字节流读取的时候,读到一个字节就返回一个字节;主要用于读取图片,MP3,AVI视频文件。

字符流:字符流使用了字节流读到一个或多个字节,如读取中文时,就会一次读取2个字节。只要是处理纯文本数据,就要优先考虑使用字符流。

字符流和字节流的区别:

  • 字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
  • 字节流默认不使用缓冲区;字符流使用缓冲区。
  • 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

 2.1、字节流读写文件(InputStream、OutputStream):

File file=new File("F:\\ciyu\\ciyu.txt");
		File file1=new File("F:\\ciyu\\ciyu1.txt");
		 //读取文件(字节流)
        InputStream in = new FileInputStream(file);
        //写入相应的文件
        OutputStream out = new FileOutputStream(file1);
        //读取数据
        //in.read()一次读取一个字节
        //一次性取多少字节
        byte[] bytes = new byte[2048];
        //接受读取的内容(n就代表的相关数据,只不过是数字的形式)
        int n = -1;
        //循环取出数据
        while ((n = in.read(bytes,0,bytes.length)) != -1) {
            //转换成字符串
        	System.out.println(n);
            String str = new String(bytes,0,n,"utf-8"); //这里可以实现字节到字符串的转换,比较实用
            System.out.println(str);
            //写入相关文件
            out.write(bytes, 0, n);
        }
        //关闭流
        in.close();
        out.close();

 2.2、BufferedInputStream、BufferedOutputStream(缓存字节流)使用方式和字节流差不多,但是效率更高(推荐使用):

File file=new File("F:\\ciyu\\ciyu.txt");
		File file1=new File("F:\\ciyu\\ciyu1.txt");
		 //读取文件(缓存字节流)
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
        //写入相应的文件
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file1));
        //读取数据
        //in.read()一次读取一个字节
        //一次性取多少字节
        byte[] bytes = new byte[2048];
        //接受读取的内容(n就代表的相关数据,只不过是数字的形式)
        int n = -1;
        //循环取出数据
        while ((n = in.read(bytes,0,bytes.length)) != -1) {
            //转换成字符串
            String str = new String(bytes,0,n,"GBK");
            System.out.println(str);
            //写入相关文件
            out.write(bytes, 0, n);
        }
        //清楚缓存
        out.flush();
        //关闭流
        in.close();
        out.close();

2.3、InputStreamReader、OutputStreamWriter(字节流,这种方式不建议使用,不能直接字节长度读写)。使用范围用做字符转换:

File file=new File("F:\\ciyu\\ciyu.txt");
		File file1=new File("F:\\ciyu\\ciyu1.txt");
		 //读取文件(字节流)
        InputStreamReader in = new InputStreamReader(new FileInputStream(file),"utf-8");
        //写入相应的文件
        OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file1));
         //in.read()一次读取一个字节
        //读取数据
        //循环取出数据
        char[] tempchars = new char[30]; 
        int len = -1;
        while ((len = in.read(tempchars)) != -1) {
            System.out.println(len);
            //写入相关文件
            out.write(len);
        }
        //清楚缓存
        out.flush();
        //关闭流
        in.close();
        out.close();

2.4、BufferedReader、BufferedWriter(字符缓存流,提供readLine方法读取一行文本,推荐使用):

File file=new File("F:\\ciyu\\ciyu.txt");
		File file1=new File("F:\\ciyu\\ciyu1.txt");
		//读取文件(字符流)
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
        //BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
        //写入相应的文件
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1),"utf-8"));
        //BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
        //读取数据
        //循环取出数据
        String str = null;
        while ((str = in.readLine()) != null) {
            System.out.println(str);
            //写入相关文件
            out.write(str);
            out.newLine();
        }
        
        //清楚缓存
        out.flush();
        //关闭流
        in.close();
        out.close();

2.5、Reader、PrintWriter(PrintWriter这个很好用,在写数据的同事可以格式化):

File file=new File("F:\\ciyu\\ciyu.txt");
		File file1=new File("F:\\ciyu\\ciyu1.txt");
		 //读取文件(字节流)
        Reader in = new InputStreamReader(new FileInputStream(file),"utf-8");
        //写入相应的文件
        PrintWriter out = new PrintWriter(new FileWriter(file1));
        //in.read()一次读取一个字节
        //读取数据
        //循环取出数据
        char[] tempchars = new char[30]; 
        int len = -1;
        while ((len = in.read(tempchars)) != -1) {
            System.out.println(len);
            //写入相关文件
            out.write(len);
        }
        //清楚缓存
        out.flush();
        //关闭流
        in.close();
        out.close();