`
services
  • 浏览: 80616 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

文件工具类

    博客分类:
  • java
阅读更多
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

import java.io.*;

public class FileHelper {

    /**获得控制台用户输入的信息
     * @return
     * @throws IOException
     */
    public static 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;
    }
    /**以文件流的方式复制文件
     * @param src 文件源目录
     * @param dest 文件目的目录
     * @throws IOException
     */
    public static 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();
    }
    /****
     * 利用PrintStream写文件
     * 文件输出示例
     */
    public static 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();
        }
    }

    /**
     * 利用StringBuffer写文件
     * 该方法可以设定使用何种编码,有效解决中文问题。
     * @throws IOException
     */
    public static 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();
    }
    /**文件重命名
     * @param path 文件目录
     * @param oldname  原来的文件名
     * @param newname 新文件名
     */
    public static 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 filename 文件名
     * @param oldpath 旧目录
     * @param newpath 新目录
     * @param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作
     */
    public static 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);
            }
        }
    }
    /**读文件
     * 利用FileInputStream读取文件
     * @param path
     * @return
     * @throws IOException
     */
    public static 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();
    }
    /**读文件
     * 在IO操作,利用BufferedReader和BufferedWriter效率会更高一点
     * @param path
     * @return
     * @throws IOException
     */
    public static 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();
    }
    /**从目录中读取xml文件
     * 利用dom4j读取xml文件
     * @param path 文件目录
     * @return
     * @throws org.dom4j.DocumentException
     * @throws IOException
     */
    public static 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;
    }
    /** 创建文件夹
     * @param path  目录
     */
    public static void createDir(String path){
        File dir=new File(path);
        if(!dir.exists())
            dir.mkdir();
    }
    /**创建新文件
     * @param path 目录
     * @param filename 文件名
     * @throws IOException
     */
    public static void createFile(String path,String filename) throws IOException{
        File file=new File(path+"/"+filename);
        if(!file.exists())
            file.createNewFile();
    }
    /**删除文件
     * @param path 目录
     * @param filename 文件名
     */
    public static void delFile(String path,String filename){
        File file=new File(path+"/"+filename);
        if(file.exists()&&file.isFile())
            file.delete();
    }
    /**递归删除文件夹
     * 要利用File类的delete()方法删除目录时,
     * 必须保证该目录下没有文件或者子目录,
     * 否则删除失败,因此在实际应用中,我们要删除目录,
     * 必须利用递归删除该目录下的所有子目录和文件,然后再删除该目录。
     * @param path
     */
    public static 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();
        }
    }

}
分享到:
评论

相关推荐

    Java文件工具类

    Java文件工具类

    Java加载配置文件工具类

    这个"Java加载配置文件工具类"很可能是为了解决这个问题而创建的一个实用工具,帮助开发者更方便、高效地处理配置文件。配置文件通常以.properties或.xml格式存在,用于存储应用程序的参数、配置项等。 配置文件的...

    java 操作文件工具类 java 操作文件工具类

    java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java ...

    上传文件工具类

    这个"上传文件工具类"显然提供了处理文件上传的功能,可能包括了文件的读取、验证、编码转换、异常处理等多个方面。下面我们将深入探讨这个主题,以及相关的关键知识点。 首先,`UploadFileUtils.java`很可能包含了...

    Android上传文件工具类

    Android上传文件工具类

    读取properties文件工具类

    这个"读取properties文件工具类"是为了简化程序中对`.properties`文件的读取操作而设计的。通过这样的工具类,开发者可以方便地加载和获取配置文件中的属性值,避免重复编写相同的代码。下面我们将详细探讨`...

    ZIP格式压缩文件工具类

    ZIP格式压缩文件工具类

    分片上传文件工具类FileInfoUtils

    分片上传文件工具类,对应文章为:https://blog.csdn.net/y534560449/article/details

    CreateFileUtil 创建文件工具类

    创建文件工具类 包含创建文件夹 文件 临时文件等

    java操作文件工具类

    文件工具类java操作文件工具类java操作文件工具类java操作文件工具类java操作文件工具类

    java 上传文件工具类 java 上传文件工具类

    java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类

    一个很全的java文件工具类

    每个程序员都应该有一套自己的工具类,这个工具类提供很全的java文件操作方法

    C# 文件工具类 文件读写 复制 删除 创建文件夹

    C# 文件工具类 实际项目使用 久经考验 文件读写 复制 删除 创建文件夹 判断文件扩展名等等

    一次代码重构之旅-快速读写xml文件工具类封装

    在描述中提到的博客文章“一次代码重构之旅-快速读写xml文件工具类封装”,作者分享了如何通过Java进行XML操作的优化,将原始的XML处理代码整合到一个工具类中,提供简洁易用的API。在阅读该博客文章的过程中,我们...

    java读写文件工具类

    大家可以不用在为操作文件发愁了! 小弟觉得这个工具类还不是很完善,高手在帮忙完善一下,别忘了共享出来哦!

    Android文件操作工具类

    文件操作工具类,包含生成保存,复制,删除,读取,获取文件名,获取文件列表等等,只有你想不到,没有你找不到的Android端工具类,复制到项目中可直接使用

    Zip4j文件工具类

    使用 net.lingala.zip4j包实现相关操作,相对于JDK自带的zip操作类,其不仅支持密码操作,更加简单方便,且不依赖其他类库。

    C# 造作XML文件工具类

    这是一个C#操作XML文件的工具类,基本上你要用的都给你写好了,直接使用

    java文件工具类

    实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能

Global site tag (gtag.js) - Google Analytics