`
accpzhangxiaowei
  • 浏览: 32720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java操作文件对象总结

    博客分类:
  • java
阅读更多
package com.xiaowei.tools.util;

/**
* 文件操作类
* @author xiaowei
* @date 2009-05-04 12:17pm
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class FileOperate {
private String message;

public FileOperate() {
}

/**
  * 读取文本文件内容
  *
  * @param filePathAndName
  *            带有完整绝对路径的文件名
  * @param encoding
  *            文本文件打开的编码方式
  * @return 返回文本文件的内容
  */

public String readTxt(String filePathAndName, String encoding) {
  encoding = encoding.trim();
  StringBuffer str = new StringBuffer("");
  String st = "";
  try {
   FileInputStream fs = new FileInputStream(filePathAndName);
   InputStreamReader isr;
   if (encoding.equals("")) {
    isr = new InputStreamReader(fs);
   } else {
    isr = new InputStreamReader(fs, encoding);
   }
   BufferedReader br = new BufferedReader(isr);
   try {
    String data = "";
    while ((data = br.readLine()) != null) {
     str.append(data + " ");
    }
   } catch (Exception e) {
    str.append(e.toString());
   }
   st = str.toString();
  } catch (IOException es) {
   st = "";
  }
  return st;
}

/**
  * 完全读取指定目录下的文件
  *
  * @param filePath
  * @param fileName
  */
public void readAllFile(String filePath, String fileName) {
  try {
   FileReader fr = new FileReader(filePath + fileName);
   int count = fr.read();
   while (count != -1) {
    System.out.print((char) count);
    count = fr.read();
    if (count == 13) {
     fr.skip(1);
    }
   }
   fr.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

}

/**
  * 按行读取指定文件,也可计算文件行数
  *
  * @param filePath
  * @param fileName
  */
public void readLineFile(String filePath, String fileName) {
  try {
   FileReader fr = new FileReader(filePath + fileName);
   BufferedReader br = new BufferedReader(fr);
   String line = br.readLine();
   int i = 0;
   while (line != null) {
    System.out.println(line);
    line = br.readLine();
    i++;
   }
   System.out.println("该文件行数:" + i);
   br.close();
   fr.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
}

/**
  * 新建目录
  *
  * @param folderPath
  *            目录
  * @return 返回目录创建后的路径
  */
public String createFolder(String folderPath) {
  String txt = folderPath;
  try {
   File myFilePath = new File(txt);
   txt = folderPath;
   if (!myFilePath.exists()) {
    myFilePath.mkdir();
   }
  } catch (Exception e) {
   message = "创建目录操作出错";
  }
  return txt;
}

/**
  * 多级目录创建 ????
  *
  * @param folderPath
  *            准备要在本级目录下创建新目录的目录路径 例如 c:myf
  * @param paths
  *            无限级目录参数,各级目录以单数线区分 例如 a|b|c
  * @return 返回创建文件后的路径 例如 c:myfa c
  */
public String createFolders(String folderPath, String paths) {
  String txts = folderPath;
  try {
   String txt;
   txts = folderPath;
   StringTokenizer st = new StringTokenizer(paths, "|");
   for (int i = 0; st.hasMoreTokens(); i++) {
    txt = st.nextToken().trim();
    if (txts.lastIndexOf("/") != -1) {
     txts = createFolder(txts + txt);
    } else {
     txts = createFolder(txts + txt + "/");
    }
   }
  } catch (Exception e) {
   message = "创建目录操作出错!";
  }
  return txts;
}

/**
  * 新建文件
  *
  * @param filePathAndName
  *            文本文件完整绝对路径及文件名
  * @param fileContent
  *            文本文件内容
  * @return
  */
public void createFile(String filePathAndName, String fileContent) {

  try {
   String filePath = filePathAndName;
   filePath = filePath.toString();
   File myFilePath = new File(filePath);
   if (!myFilePath.exists()) {
    myFilePath.createNewFile();
   }
   FileWriter resultFile = new FileWriter(myFilePath);
   PrintWriter myFile = new PrintWriter(resultFile);
   String strContent = fileContent;
   myFile.println(strContent);
   myFile.close();
   resultFile.close();
  } catch (Exception e) {
   message = "创建文件操作出错";
  }
}

/**
  * 有编码方式的文件创建
  *
  * @param filePathAndName
  *            文本文件完整绝对路径及文件名
  * @param fileContent
  *            文本文件内容
  * @param encoding
  *            编码方式 例如 GBK 或者 UTF-8
  * @return
  */
public void createFile(String filePathAndName, String fileContent,
   String encoding) {

  try {
   String filePath = filePathAndName;
   filePath = filePath.toString();
   File myFilePath = new File(filePath);
   if (!myFilePath.exists()) {
    myFilePath.createNewFile();
   }
   PrintWriter myFile = new PrintWriter(myFilePath, encoding);
   String strContent = fileContent;
   myFile.println(strContent);
   myFile.close();
  } catch (Exception e) {
   message = "创建文件操作出错";
  }
}

/**
  * 删除文件
  *
  * @param filePathAndName
  *            文本文件完整绝对路径及文件名
  * @return Boolean 成功删除返回true遭遇异常返回false
  */
public boolean delFile(String filePathAndName) {
  boolean bea = false;
  try {
   String filePath = filePathAndName;
   File myDelFile = new File(filePath);
   if (myDelFile.exists()) {
    myDelFile.delete();
    bea = true;
   } else {
    bea = false;
    message = (filePathAndName + "删除文件操作出错");
   }
  } catch (Exception e) {
   message = e.toString();
  }
  return bea;
}

/**
  * 删除文件夹
  *
  * @param folderPath
  *            文件夹完整绝对路径
  * @return
  */
public void delFolder(String folderPath) {
  try {
   delAllFile(folderPath); // 删除完里面所有内容
   String filePath = folderPath;
   filePath = filePath.toString();
   java.io.File myFilePath = new java.io.File(filePath);
   myFilePath.delete(); // 删除空文件夹
  } catch (Exception e) {
   message = ("删除文件夹操作出错");
  }
}

/**
  * 删除指定文件夹下所有文件
  *
  * @param path
  *            文件夹完整绝对路径
  * @return
  * @return
  */
public boolean delAllFile(String path) {
  boolean bea = false;
  File file = new File(path);
  if (!file.exists()) {
   return bea;
  }
  if (!file.isDirectory()) {
   return bea;
  }
  String[] tempList = file.list();
  File temp = null;
  for (int i = 0; i < tempList.length; i++) {
   if (path.endsWith(File.separator)) {
    temp = new File(path + tempList[i]);
   } else {
    temp = new File(path + File.separator + tempList[i]);
   }
   if (temp.isFile()) {
    temp.delete();
   }
   if (temp.isDirectory()) {
    delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
    delFolder(path + "/" + tempList[i]);// 再删除空文件夹
    bea = true;
   }
  }
  return bea;
}

/**
  * 复制单个文件
  *
  * @param oldPathFile
  *            准备复制的文件源
  * @param newPathFile
  *            拷贝到新绝对路径带文件名
  * @return
  */
public void copyFile(String oldPathFile, String newPathFile) {
  try {
   int bytesum = 0;
   int byteread = 0;
   File oldfile = new File(oldPathFile);
   if (oldfile.exists()) { // 文件存在时
    InputStream inStream = new FileInputStream(oldPathFile); // 读入原文件
    FileOutputStream fs = new FileOutputStream(newPathFile);
    byte[] buffer = new byte[1444];
    while ((byteread = inStream.read(buffer)) != -1) {
     bytesum += byteread; // 字节数 文件大小
     System.out.println(bytesum);
     fs.write(buffer, 0, byteread);
    }
    inStream.close();
   }
  } catch (Exception e) {
   message = ("复制单个文件操作出错");
  }
}

/**
  * 复制整个文件夹的内容
  *
  * @param oldPath
  *            准备拷贝的目录
  * @param newPath
  *            指定绝对路径的新目录
  * @return
  */
public void copyFolder(String oldPath, String newPath) {
  try {
   new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件夹
   File a = new File(oldPath);
   String[] file = a.list();
   File temp = null;
   for (int i = 0; i < file.length; i++) {
    if (oldPath.endsWith(File.separator)) {
     temp = new File(oldPath + file[i]);
    } else {
     temp = new File(oldPath + File.separator + file[i]);
    }
    if (temp.isFile()) {
     FileInputStream input = new FileInputStream(temp);
     FileOutputStream output = new FileOutputStream(newPath
       + "/" + (temp.getName()).toString());
     byte[] b = new byte[1024 * 5];
     int len;
     while ((len = input.read(b)) != -1) {
      output.write(b, 0, len);
     }
     output.flush();
     output.close();
     input.close();
    }
    if (temp.isDirectory()) {// 如果是子文件夹
     copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
    }
   }
  } catch (Exception e) {
   message = "复制整个文件夹内容操作出错";
  }
}

/**
  * 移动文件
  *
  * @param oldPath
  * @param newPath
  * @return
  */
public void moveFile(String oldPath, String newPath) {
  copyFile(oldPath, newPath);
  delFile(oldPath);
}

/**
  * 移动目录
  *
  * @param oldPath
  * @param newPath
  * @return
  */
public void moveFolder(String oldPath, String newPath) {
  copyFolder(oldPath, newPath);
  delFolder(oldPath);
}

public String getMessage() {
  return this.message;
}

/**
  * 向 指定文件输入数据,该文件存在时重洗,不存在时创建。
  *
  * @param filename
  * @param fin
  */
public void fwriter(String filename, String fin) {
  try {
   PrintWriter out = new PrintWriter(new BufferedWriter(
     new FileWriter(filename)), true);
   out.println(fin);
   out.flush();
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
}

// up
public void writeFile(String filePath, String fileName, String args) {
  try {
   FileWriter fw = new FileWriter(filePath + fileName);
   fw.write(args);
   fw.close();
  } catch (IOException e) {
   e.printStackTrace();
  }

}

/**
  * 以数组形式向文件中输入数据
  *
  * @param filePath
  * @param fileName
  * @param args
  */
public void writeFile(String filePath, String fileName, String[] args) {
  try {
   FileWriter fw = new FileWriter(filePath + fileName);
   PrintWriter out = new PrintWriter(fw);
   for (int i = 0; i < args.length; i++) {
    out.write(args[i]);
    out.println();
    out.flush();
   }
   fw.close();
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }

}

/**
  * 创建、删除文件,有则删除,无则创建
  *
  * @param filePath
  * @param fileName
  * @return
  */
public boolean createAndDeleteFile(String filePath, String fileName) {
  boolean result = false;
  File file = new File(filePath, fileName);
  if (file.exists()) {
   file.delete();
   result = true;
   System.out.println("删除文件成功");
  } else {
   try {
    file.createNewFile();
   } catch (IOException e) {
    e.printStackTrace();
   }
   result = true;
   System.out.println("创建文件成功");
  }
  return result;
}

/**
  * 在指定绝对路径的目录下创建目录
  *
  * @param filePath
  * @param folderName
  */
public synchronized void createFolder(String filePath, String folderName) {
  try {
   String[] st = folderName.split("/");
   for (int i = 0; i < st.length; i++) {
    filePath = filePath + st[i] + "/";
    File file = new File(filePath);
    File parentFile = new File(file.getParent());
    if (!parentFile.exists()) {
     parentFile.mkdir();
    }
    if (!file.exists()) {
     file.mkdir();
    }
   }
  } catch (Exception ex) {
   System.out.println("CreateAndDeleteFolder is error:" + ex);
  }
}

/**
  * 创建、删除目录
  *
  * @param folderName
  * @param filePath
  * @return
  */
public boolean createAndDeleteFolder(String folderName, String filePath) {
  boolean result = false;
  try {
   File file = new File(filePath + folderName);
   if (file.exists()) {
    file.delete();
    System.out.println("目录已经存在,已删除!");
    result = true;
   } else {
    file.mkdir();
    System.out.println("目录不存在,已经建立!");
    result = true;
   }
  } catch (Exception ex) {
   result = false;
   System.out.println("CreateAndDeleteFolder is error:" + ex);
  }
  return result;
}

/**
  * 指定目录下的文件。
  *
  * @param filePath
  */
public void readFolderByFile(String filePath) {
  File file = new File(filePath);
  File[] tempFile = file.listFiles();
  for (int i = 0; i < tempFile.length; i++) {
   if (tempFile[i].isFile()) {
    System.out.println("File : " + tempFile[i].getName());
   }
   if (tempFile[i].isDirectory()) {
    System.out.println("Directory : " + tempFile[i].getName());
   }
  }
}

/**
  * 判断文件是否为空
  *
  * @param args
  */
public boolean fileIsNull(String filePath, String fileName) {
  boolean result = false;
  try {
   FileReader fr = new FileReader(filePath + fileName);
   if (fr.read() == -1) {
    result = true;
    System.out.println(fileName + "该文件中没有数据");
   } else {
    System.out.println(fileName + "该文件中有数据");
   }
   fr.close();
  } catch (IOException e) {
   e.printStackTrace();
  }

  return result;
}

}
分享到:
评论

相关推荐

    Java中File类对文件的几个常见操作实例总结

    Java中File类对文件的几个常见操作实例总结

    javascript使用Blob对象实现的下载文件操作示例

    本文实例讲述了javascript使用Blob对象实现的下载文件操作。分享给大家供大家参考,具体如下: Blob对象 前言 环境 操作 总结 Blob是一个类文件的不可变的原始数据对象,非javascript原生数据类型,File对象...

    Java 基础核心总结 +经典算法大全.rar

    BIO 和 NIO 拷贝文件的区别操作系统的零拷贝 选择器(Selectors) 选择键(SelectionKey) 示例:简易的客户端服务器通信 集合 集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系...

    java 面试题 总结

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 25、short s1 = 1; s1 =...

    java中的IO操作总结(四)

    java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

    corejava基础重要知识点总结

    跨平台:用java开发出来的应用程序不受底层操作系统的限制 底层的功臣:JVM = java虚拟机 = 1 + 2 + 3 = 秘书 + 保镖 + 翻译 = 秘书 = 类加载器 = ClassLoader = 保镖 = 字节码校验器 = ByteCode Verifier = ...

    Java基础入门教程 第9章 Java的高级特性(共32页).ppt

    【完整课程列表】 ... Java基础入门教程 第1章 Java 简介...Java基础入门教程 第8章 文件流的输入输出操作(共37页).ppt Java基础入门教程 第9章 Java的高级特性(共32页).ppt jdk api 1.7.chm JDK_API_1_6_zh_CN.CHM

    java 编程入门思考

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    JAVA基础知识精华总结 收藏

    JAVA基础知识精华总结 收藏 1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在...

    黑马程序员入学Java知识——精华总结

    含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,

    Java-使用序列化保存对象数据到文件学习总结

    Java当中提供了一种序列化操作的方式,用一个字节序列来表示一个对象,该字节序列中保存了对象的属性、对象的数据、对象的类型。把字节序列化保存到文件中,就可以做到持久化保存数据内容。 1.2 如何将对象数据序列...

    Java之IO流学习总结

    File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断...

    如何使用EasyExcel库来写入Excel文件

    通过以上示例代码,你应该能够理解如何使用EasyExcel库在Java中进行Excel文件的写入操作。这个库提供了简洁的API,使得Excel文件的操作变得非常方便。 总结一下,实现Excel文件写入的步骤包括: 1.引入EasyExcel的...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-030-Java语言概述-重难点总结.avi 北京动力节点-Java编程零基础教程-031-Java基本语法-注释-单行注释与多行注释.avi 北京动力节点-Java编程零基础教程-032-Java基本语法-注释-...

    Java语言基础下载

    第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented...

    java IO章节的总结

    以上能够直接对数据进行读和写的流叫节点流,但是直接用这些来操作是比较麻烦的,而且一个字节一个字节的对文件处理,对硬盘的读取和存入对硬盘的损伤是很大的,因此需要对这些节点流进行包装,即外套一些处理流来...

    java 异常总结

    当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。 java.lang.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常...

    Java IO 体系.md

    - Java IO 流对象 - 字节流对象 - InputStream - OutputStream - 字符流对象 - Reader - Writer - 字节流与字符流的转换 - 新潮的 NIO - 缓冲区(Buffer) - 通道(Channel) - 示例:文件拷贝案例 - ...

    Java2游戏编程.pdf

    第3章 带有类的语言:Java面向对象程序设计 3.1 设计一个Java类 3.2 方法的魔法 3.3 关于方法的更多话题 3.3.1 构造函数方法 3.3.2 访问方法 3.3.3 类方法 3.3.4 “其他”方法 3.4 继承 3.5 抽象类 3.6 类修饰符 3.7...

    Java初学者入门教学

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

Global site tag (gtag.js) - Google Analytics