java中文件操作大全

一.获得控制台用户输入的信息

 

 view plaincopy to clipboardprint?
 / //获得控制台用户输入的信息    
        return    
        throws ioexception    
      /     
     public string getinputmessage() throws ioexception...{      
         system.out.println(" 请输入您的命令∶" )       
         byte buffer[]=new byte[1024]       
         int count=system.in.read(buffer)       
         char[] ch=new char[count-2] //最后两位为结束符,删去不要      
         for(int i=0 i< count-2 i++)      
             ch[i]=(char)buffer[i]       
         string str=new string(ch)       
         return str       
     }    
 / //获得控制台用户输入的信息  
        return  
        throws ioexception  
      /  
     public string getinputmessage() throws ioexception...{   
         system.out.println(" 请输入您的命令∶" )    
         byte buffer[]=new byte[1024]    
         int count=system.in.read(buffer)    
         char[] ch=new char[count-2] //最后两位为结束符,删去不要   
         for(int i=0 i< count-2 i++)   
             ch[i]=(char)buffer[i]    
         string str=new string(ch)    
         return str    
     }  
 

 可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进。 

 二.复制文件 

 1.以文件流的方式复制文件 

 view plaincopy to clipboardprint?
 / //以文件流的方式复制文件    
        param src 文件源目录    
        param dest 文件目的目录    
        throws ioexception      
      /     
     public void copyfile(string src string dest) throws ioexception...{      
         fileinputstream in=new fileinputstream(src)       
         file file=new file(dest)       
         if(!file.exists())      
             file.createnewfile()       
         fileoutputstream out=new fileoutputstream(file)       
         int c       
         byte buffer[]=new byte[1024]       
         while((c=in.read(buffer))!=-1)...{      
             for(int i=0 i< c i++)      
                 out.write(buffer[i])               
         }      
         in.close()       
         out.close()       
     }    
 / //以文件流的方式复制文件  
        param src 文件源目录  
        param dest 文件目的目录  
        throws ioexception    
      /  
     public void copyfile(string src string dest) throws ioexception...{   
         fileinputstream in=new fileinputstream(src)    
         file file=new file(dest)    
         if(!file.exists())   
             file.createnewfile()    
         fileoutputstream out=new fileoutputstream(file)    
         int c    
         byte buffer[]=new byte[1024]    
         while((c=in.read(buffer))!=-1)...{   
             for(int i=0 i< c i++)   
                 out.write(buffer[i])            
         }   
         in.close()    
         out.close()    
     }  
  


 该方法经过测试,支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式 

 三.写文件 

 view plaincopy to clipboardprint?
 1.利用printstream写文件      
      
 / //    
       文件输出示例    
      /     
     public void printstreamdemo()...{      
         try ...{      
             fileoutputstream out=new fileoutputstream(" d:/test.txt" )       
             printstream p=new printstream(out)       
             for(int i=0 i< 10 i++)      
                 p.println(" this is " +i+"  line" )       
         } catch (filenotfoundexception e) ...{      
             e.printstacktrace()       
         }      
     }    
 1.利用printstream写文件   
   
 / //  
       文件输出示例  
      /  
     public void printstreamdemo()...{   
         try ...{   
             fileoutputstream out=new fileoutputstream(" d:/test.txt" )    
             printstream p=new printstream(out)    
             for(int i=0 i< 10 i++)   
                 p.println(" this is " +i+"  line" )    
         } catch (filenotfoundexception e) ...{   
             e.printstacktrace()    
         }   
     }  
  
 2.利用stringbuffer写文件
 view plaincopy to clipboardprint?
 public void stringbufferdemo() throws ioexception......{      
         file file=new file(" /root/sms.log" )       
         if(!file.exists())      
             file.createnewfile()       
         fileoutputstream out=new fileoutputstream(file true)               
         for(int i=0 i< 10000 i++)......{      
             stringbuffer sb=new stringbuffer()       
             sb.append(" 这是第" +i+" 行:前面介绍的各种方法都不关用 为什么总是奇怪的问题 " )       
             out.write(sb.tostring().getbytes(" utf-8" ))       
         }              
         out.close()       
     }    
 public void stringbufferdemo() throws ioexception......{   
         file file=new file(" /root/sms.log" )    
         if(!file.exists())   
             file.createnewfile()    
         fileoutputstream out=new fileoutputstream(file true)            
         for(int i=0 i< 10000 i++)......{   
             stringbuffer sb=new stringbuffer()    
             sb.append(" 这是第" +i+" 行:前面介绍的各种方法都不关用 为什么总是奇怪的问题 " )    
             out.write(sb.tostring().getbytes(" utf-8" ))    
         }           
         out.close()    
     }  
  

 该方法可以设定使用何种编码,有效解决中文问题。 

 四.文件重命名 

 

view plaincopy to clipboardprint?
 / //文件重命名    
      param path 文件目录    
      param oldname  原来的文件名    
      param newname 新文件名    
    /     
   public void renamefile(string path string oldname string newname)...{      
       if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时 才有必要进行重命名      
           file oldfile=new file(path+" /" +oldname)       
           file newfile=new file(path+" /" +newname)       
           if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名      
               system.out.println(newname+" 已经存在!" )       
           else...{      
               oldfile.renameto(newfile)       
           }       
       }               
   }    
 / //文件重命名  
      param path 文件目录  
      param oldname  原来的文件名  
      param newname 新文件名  
    /  
   public void renamefile(string path string oldname string newname)...{   
       if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时 才有必要进行重命名   
           file oldfile=new file(path+" /" +oldname)    
           file newfile=new file(path+" /" +newname)    
           if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名   
               system.out.println(newname+" 已经存在!" )    
           else...{   
               oldfile.renameto(newfile)    
           }    
       }            
   }  
 

 五.转移文件目录 

 
 转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件,而转移文件目录则是转移后,只有新目录中存在该文件。

 view plaincopy to clipboardprint?
 / //转移文件目录    
        param filename 文件名    
        param oldpath 旧目录    
        param newpath 新目录    
        param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作    
      /     
     public void changedirectory(string filename string oldpath string newpath boolean cover)...{      
         if(!oldpath.equals(newpath))...{      
             file oldfile=new file(oldpath+" /" +filename)       
             file newfile=new file(newpath+" /" +filename)       
             if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件      
                 if(cover)//覆盖      
                     oldfile.renameto(newfile)       
                 else     
                     system.out.println(" 在新目录下已经存在:" +filename)       
             }      
             else...{      
                 oldfile.renameto(newfile)       
             }      
         }             
     }    
 / //转移文件目录  
        param filename 文件名  
        param oldpath 旧目录  
        param newpath 新目录  
        param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作  
      /  
     public void changedirectory(string filename string oldpath string newpath boolean cover)...{   
         if(!oldpath.equals(newpath))...{   
             file oldfile=new file(oldpath+" /" +filename)    
             file newfile=new file(newpath+" /" +filename)    
             if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件   
                 if(cover)//覆盖   
                     oldfile.renameto(newfile)    
                 else  
                     system.out.println(" 在新目录下已经存在:" +filename)    
             }   
             else...{   
                 oldfile.renameto(newfile)    
             }   
         }          
     }  
  

 六.读文件 

 1.利用fileinputstream读取文件

 

 view plaincopy to clipboardprint?
 / //读文件    
      param path    
      return    
      throws ioexception    
    /     
   public string fileinputstreamdemo(string path) throws ioexception...{      
       file file=new file(path)       
       if(!file.exists()||file.isdirectory())      
           throw new filenotfoundexception()       
       fileinputstream fis=new fileinputstream(file)       
       byte[] buf = new byte[1024]       
       stringbuffer sb=new stringbuffer()       
       while((fis.read(buf))!=-1)...{      
           sb.append(new string(buf))           
           buf=new byte[1024] //重新生成,避免和上次读取的数据重复      
       }      
       return sb.tostring()       
   }    
 / //读文件  
      param path  
      return  
      throws ioexception  
    /  
   public string fileinputstreamdemo(string path) throws ioexception...{   
       file file=new file(path)    
       if(!file.exists()||file.isdirectory())   
           throw new filenotfoundexception()    
       fileinputstream fis=new fileinputstream(file)    
       byte[] buf = new byte[1024]    
       stringbuffer sb=new stringbuffer()    
       while((fis.read(buf))!=-1)...{   
           sb.append(new string(buf))        
           buf=new byte[1024] //重新生成,避免和上次读取的数据重复   
       }   
       return sb.tostring()    
   }  
  
 .利用bufferedreader读取 
 在io操作,利用bufferedreader和bufferedwriter效率会更高一点
 view plaincopy to clipboardprint?
 / //读文件    
       param path    
       return    
       throws ioexception    
     /     
    public string bufferedreaderdemo(string path) throws ioexception...{      
        file file=new file(path)       
        if(!file.exists()||file.isdirectory())      
            throw new filenotfoundexception()       
        bufferedreader br=new bufferedreader(new filereader(file))       
        string temp=null       
        stringbuffer sb=new stringbuffer()       
        temp=br.readline()       
        while(temp!=null)...{      
            sb.append(temp+"  " )       
            temp=br.readline()       
        }      
        return sb.tostring()       
    }    
 / //读文件  
       param path  
       return  
       throws ioexception  
     /  
    public string bufferedreaderdemo(string path) throws ioexception...{   
        file file=new file(path)    
        if(!file.exists()||file.isdirectory())   
            throw new filenotfoundexception()    
        bufferedreader br=new bufferedreader(new filereader(file))    
        string temp=null    
        stringbuffer sb=new stringbuffer()    
        temp=br.readline()    
        while(temp!=null)...{   
            sb.append(temp+"  " )    
            temp=br.readline()    
        }   
        return sb.tostring()    
    }  
  

 3.利用dom4j读取xml文件

 

view plaincopy to clipboardprint?
 / //从目录中读取xml文件    
       param path 文件目录    
       return    
       throws documentexception    
       throws ioexception    
     /     
    public document readxml(string path) throws documentexception  ioexception...{      
        file file=new file(path)       
        bufferedreader bufferedreader = new bufferedreader(new filereader(file))       
        saxreader saxreader = new saxreader()       
        document document = (document)saxreader.read(bufferedreader)       
        bufferedreader.close()       
        return document       
    }     
 / //从目录中读取xml文件  
       param path 文件目录  
       return  
       throws documentexception  
       throws ioexception  
     /  
    public document readxml(string path) throws documentexception  ioexception...{   
        file file=new file(path)    
        bufferedreader bufferedreader = new bufferedreader(new filereader(file))    
        saxreader saxreader = new saxreader()    
        document document = (document)saxreader.read(bufferedreader)    
        bufferedreader.close()    
        return document    
    }   
  

 七.创建文件(文件夹) 

 1.创建文件夹

 view plaincopy to clipboardprint?
 / //创建文件夹    
        param path  目录    
      /     
     public void createdir(string path)...{      
         file dir=new file(path)       
         if(!dir.exists())      
             dir.mkdir()       
     }      


 2.创建新文件 / //创建新文件    
     
   param path 目录    
        param filename 文件名    
        throws ioexception    
      /     
     public void createfile(string path string filename) throws ioexception...{      
         file file=new file(path+" /" +filename)       
         if(!file.exists())      
             file.createnewfile()       
     }    
 / //创建文件夹  
        param path  目录  
      /  
     public void createdir(string path)...{   
         file dir=new file(path)    
         if(!dir.exists())   
             dir.mkdir()    
     }   


 2.创建新文件 / //创建新文件  
        param path 目录  
        param filename 文件名  
        throws ioexception  
      /  
     public void createfile(string path string filename) throws ioexception...{   
         file file=new file(path+" /" +filename)    
         if(!file.exists())   
             file.createnewfile()    
     }  
  


 八.删除文件(目录) 

 1.删除文件

 

view plaincopy to clipboardprint?
 / //删除文件    
      param path 目录    
      param filename 文件名    
    /     
   public void delfile(string path string filename)...{      
       file file=new file(path+" /" +filename)       
       if(file.exists()& & file.isfile())      
           file.delete()       
   }    
 / //删除文件  
      param path 目录  
      param filename 文件名  
    /  
   public void delfile(string path string filename)...{   
       file file=new file(path+" /" +filename)    
       if(file.exists()& & file.isfile())   
           file.delete()    
   }  


  

 2.删除目录 
 要利用file类的delete()方法删除目录时,必须保证该目录下没有文件或者子目录,否则删除失败,因此在实际应用中,我们要删除目录,必须利用递归删除该目录下的所有子目录和文件,然后再删除该目录。

 

view plaincopy to clipboardprint?
 / //递归删除文件夹    
        param path    
      /     
     public void deldir(string path)...{      
         file dir=new file(path)       
         if(dir.exists())...{      
             file[] tmp=dir.listfiles()       
             for(int i=0 i< tmp.length i++)...{      
                 if(tmp[i].isdirectory())...{      
                     deldir(path+" /" +tmp[i].getname())       
                 }      
                 else...{      
                     tmp[i].delete()       
                 }      
             }      
             dir.delete()       
         }      
     }    
 / //递归删除文件夹  
        param path  
      /  
     public void deldir(string path)...{   
         file dir=new file(path)    
         if(dir.exists())...{   
             file[] tmp=dir.listfiles()    
             for(int i=0 i< tmp.length i++)...{   
                 if(tmp[i].isdirectory())...{   
                     deldir(path+" /" +tmp[i].getname())    
                 }   
                 else...{   
                     tmp[i].delete()    
                 }   
             }   
             dir.delete()    
         }   
     }  
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙漏无语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值