`
George_ghc
  • 浏览: 94946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
Java 文件处理的几种方法 java基础
最近总结了了一下,Java对文件的处理方法,主要包含,文件的创建,删除,重命名,复制,移动几种文件的处理,
具体代码如下:
[html] view plaincopy
package com.file;  
  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.util.Date;  
  
public class File_Test {  
  
    //文件是否成功删除  
//  private boolean flag;  
    /**  
     * 创建文件及目录  
     * @param path  
     * @param filename  
     */  
    public void create_file(String path,String filename){  
        String sparator=File.separator;  
        File f=new File(path, filename);  
        if(f.exists()){  
            System.out.println("file exist! file detail");  
            System.out.println("file path "+f.getAbsolutePath());  
            System.out.println("file length "+f.length()+" "+f.lastModified());           
        }else{  
            f.getParentFile().mkdirs();  
            try {  
                f.createNewFile();  
            } catch (IOException e) {  
                e.printStackTrace();  
                System.out.println("创建文件失败!");  
            }  
        }  
    }  
    /**  
     * 获取文件属性  
     * @param path  
     * @param filename  
     */  
    public void getFile(String path,String filename){  
        File f=new File(path, filename);  
        if(f.exists()){  
            System.out.println("file abspath "+f.getAbsolutePath()+'\n'+"file reable "+f.getParentFile()+'\n'  
                    +"file standar "+f.isFile()+'\n'+"file length "+f.length()+'\n'+"file modify time "+new Date(f.lastModified())+'\n'  
                    +"file can read "+f.canRead()+'\n'+"file can write "  
                    +f.canWrite()+'\n'+"file whether hidden "+f.isHidden());  
        }else{  
            System.out.println("file not exist!");  
        }  
    }  
    /**  
     * 文件及文件夹的复制  
     * @param src  
     * @param des  
     * @return  
     */  
    public boolean copy(String src,String des) {  
          
        File in=new File(src);  
        File out=new File(des);  
        if(!in.exists()){  
            System.out.println(in.getAbsolutePath()+"源文件路径错误!!!");  
            return false;  
        }  
        else {  
            System.out.println("源文件路径"+in.getAbsolutePath());  
            System.out.println("目标路径"+out.getAbsolutePath());  
              
        }  
        if(!out.exists())   
            out.mkdirs();  
        File[] file=in.listFiles();  
        FileInputStream fin=null;  
        FileOutputStream fout=null;  
        for(int i=0;i<file.length;i++){  
        if(file[i].isFile()){  
            try {  
                fin=new FileInputStream(file[i]);  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            }  
            System.out.println("in.name="+file[i].getName());  
            try {  
                fout=new FileOutputStream(new File(des+File.separator+file[i].getName()));  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            }  
            System.out.println(des);  
            int c;  
            byte[] b=new byte[1024];  
            try {  
                while((c=fin.read(b))!=-1){  
                    fout.write(b, 0, c);  
                    System.out.println("复制文件中!");  
                }  
                fin.close();  
                fout.flush();  
                fout.close();  
                System.out.println("复制完毕!");  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
        else copy(src+File.separator+file[i].getName(),des+File.separator+file[i].getName());  
        }  
        return false;  
    }  
    /**  
     * 文件夹的移动  
     * @param src  
     * @param dest  
     * @return  
     */  
    private boolean moveFolder(String src, String dest) {  
          File srcFolder = new File(src);  
         File destFolder = new File(dest);  
  
          if(!srcFolder.exists()){  
              return false;  
          }else{  
              if(!destFolder.exists())  
                  destFolder.mkdirs();  
                
              if(srcFolder.isFile()){  
                  srcFolder.renameTo(new File( dest+srcFolder.getName()));  
              }  
              else if(srcFolder.isDirectory()){  
                    
                 File[] files=srcFolder.listFiles();  
                 for(int i=0;i<files.length;i++){  
                     if(files[i].isFile())  
                         files[i].renameTo(new File(dest+File.separator+files[i].getName()));  
                       
                     else  
                         moveFolder(src+File.separator+files[i].getName(), dest+File.separator+files[i].getName());  
                 }  
              }  
          }  
          return true;  
    }  
    /**  
     * 单个文件移动  
     */  
    private void fileMove(){  
        String src="E:/tt/",des="F:/kk/";  
         File f=new File(des);   
          File fileList[]=f.listFiles();   
          for(int i=0;i<fileList.length ;i++) {   
              fileList[i].renameTo(new File( src+ fileList[i].getName()));   
         }   
    }  
    /**  
     *  根据路径删除指定的目录或文件,无论存在与否  
     *@param sPath  要删除的目录或文件  
     *@return 删除成功返回 true,否则返回 false。  
     */  
    private boolean DeleteFolder(String sPath) {  
        boolean  flag = false;  
       File file = new File(sPath);  
        // 判断目录或文件是否存在  
        if (!file.exists()) {  // 不存在返回 false  
            return flag;  
        } else {  
            // 判断是否为文件  
            if (file.isFile()) {  // 为文件时调用删除文件方法  
                return deleteFile(sPath);  
            } else {  // 为目录时调用删除目录方法  
                return deleteDirectory(sPath);  
            }  
        }  
    }  
    /**  
     * 删除单个文件  
     * @param   sPath    被删除文件的文件名  
     * @return 单个文件删除成功返回true,否则返回false  
     */  
    private boolean deleteFile(String sPath) {  
        boolean  flag = false;  
        File file = new File(sPath);  
        // 路径为文件且不为空则进行删除  
        if (file.isFile() && file.exists()) {  
            file.delete();  
            flag = true;  
        }  
        return flag;  
    }  
    /**  
     * 删除目录(文件夹)以及目录下的文件  
     * @param   sPath 被删除目录的文件路径  
     * @return  目录删除成功返回true,否则返回false  
     */  
    private boolean deleteDirectory(String sPath) {  
        //如果sPath不以文件分隔符结尾,自动添加文件分隔符  
        if (!sPath.endsWith(File.separator)) {  
            sPath = sPath + File.separator;  
        }  
        File dirFile = new File(sPath);  
        //如果dir对应的文件不存在,或者不是一个目录,则退出  
        if (!dirFile.exists() || !dirFile.isDirectory()) {  
            return false;  
        }  
        boolean  flag = true;  
        //删除文件夹下的所有文件(包括子目录)  
        File[] files = dirFile.listFiles();  
        for (int i = 0; i < files.length; i++) {  
            //删除子文件  
            if (files[i].isFile()) {  
                flag = deleteFile(files[i].getAbsolutePath());  
                if (!flag) break;  
            } //删除子目录  
            else {  
                flag = deleteDirectory(files[i].getAbsolutePath());  
                if (!flag) break;  
            }  
        }  
        if (!flag) return false;  
        //删除当前目录  
        if (dirFile.delete()) {System.out.println("删除成功");  
            return true;  
        } else {System.out.println("删除失败");  
            return false;  
        }  
    }  
    /**  
     * 以二叉树形式展示文件名字,(windows文件管理形式)  
     * @param file  
     * @param level  
     */  
    private void treeName(File file,int level){  
        String space= " ";  
        for(int t=0;t<level;t++){  
            space+=" ";  
        }  
        File[] files=file.listFiles();  
        for(int i=0;i<files.length;i++){  
            System.out.println(space+files[i].getName());  
            if(files[i].isDirectory()){  
                treeName(files[i],level+1);  
            }  
        }  
    }  
      
    public static void main(String[] args) {  
        File_Test ft=new File_Test();  
          
        /*ft.create_file(path, "b.txt");  
        ft.list_file("F:/a");  
        ft.getFile(path, "a.txt");  
        ft.copy_file(path, "a.txt", path2, "c.txt");*/  
        //ft.copy("F:/11","F:/kk");  
        //ft.DeleteFolder("F:/kk");ft.DeleteFolder("E:/tt");  
        //ft.moveFolder("F:/tt/","F:/kk/");  
    }  
  
}  

将特定文本信息写入项目所在的根目录下:
[java] view plaincopy
String str="write dir";  
          
        String filename=System.getProperty("user.dir")+"/src/com/agency/model2/temp.txt";  
        File f=new File(filename);  
        FileWriter fw=new FileWriter(f);  
        fw.write(str);  
        fw.flush();  
        fw.close();  
以上就可以将信息记录在项目内文件之中。

ok,以上方法经过测试,功能基本可以,如有问题请留言。
Global site tag (gtag.js) - Google Analytics