Java编程中最基础的文件和目录操作方法详解

文件操作

平常经常使用JAVA对文件进行读写等操作,这里汇总一下常用的文件操作。

1、创建文件

public static boolean createFile(String filePath){
  boolean result = false;
  File file = new File(filePath);
  if(!file.exists()){
    try {
      result = file.createNewFile();
    } catch (IOException e) {
      e.printStackTrace();
    }
  } 

  return result;
}

2、创建文件夹

public static boolean createDirectory(String directory){
  boolean result = false;
  File file = new File(directory);
  if(!file.exists()){
    result = file.mkdirs();
  } 

  return result;
}

3、删除文件

public static boolean deleteFile(String filePath){
  boolean result = false;
  File file = new File(filePath);
  if(file.exists() && file.isFile()){
    result = file.delete();
  } 

  return result;
} 

4、删除文件夹

递归删除文件夹下面的子文件和文件夹

public static void deleteDirectory(String filePath){
  File file = new File(filePath);
  if(!file.exists()){
    return;
  } 

  if(file.isFile()){
    file.delete();
  }else if(file.isDirectory()){
    File[] files = file.listFiles();
    for (File myfile : files) {
      deleteDirectory(filePath + "/" + myfile.getName());
    } 

    file.delete();
  }
}

5、读文件

(1)以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件

public static String readFileByBytes(String filePath){
  File file = new File(filePath);
  if(!file.exists() || !file.isFile()){
    return null;
  } 

  StringBuffer content = new StringBuffer(); 

  try {
    byte[] temp = new byte[1024];
    FileInputStream fileInputStream = new FileInputStream(file);
    while(fileInputStream.read(temp) != -1){
      content.append(new String(temp));
      temp = new byte[1024];
    } 

    fileInputStream.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  } 

  return content.toString();
}

(2)以字符为单位读取文件,常用于读文本,数字等类型的文件,支持读取中文

public static String readFileByChars(String filePath){
  File file = new File(filePath);
  if(!file.exists() || !file.isFile()){
    return null;
  } 

  StringBuffer content = new StringBuffer();
  try {
    char[] temp = new char[1024];
    FileInputStream fileInputStream = new FileInputStream(file);
    InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "GBK");
    while(inputStreamReader.read(temp) != -1){
      content.append(new String(temp));
      temp = new char[1024];
    } 

    fileInputStream.close();
    inputStreamReader.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  } 

  return content.toString();
}

(3)以行为单位读取文件,常用于读面向行的格式化文件

public static List<String> readFileByLines(String filePath){
  File file = new File(filePath);
  if(!file.exists() || !file.isFile()){
    return null;
  } 

  List<String> content = new ArrayList<String>();
  try {
    FileInputStream fileInputStream = new FileInputStream(file);
    InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "GBK");
    BufferedReader reader = new BufferedReader(inputStreamReader);
    String lineContent = "";
    while ((lineContent = reader.readLine()) != null) {
      content.add(lineContent);
      System.out.println(lineContent);
    } 

    fileInputStream.close();
    inputStreamReader.close();
    reader.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  } 

  return content;
}

6、写文件

字符串写入文件的几个类中,FileWriter效率最高,BufferedOutputStream次之,FileOutputStream最差。

(1)通过FileOutputStream写入文件

public static void writeFileByFileOutputStream(String filePath, String content) throws IOException{
  File file = new File(filePath);
  synchronized (file) {
    FileOutputStream fos = new FileOutputStream(filePath);
    fos.write(content.getBytes("GBK"));
    fos.close();
  }
}

(2)通过BufferedOutputStream写入文件

public static void writeFileByBufferedOutputStream(String filePath, String content) throws IOException{
  File file = new File(filePath);
  synchronized (file) {
    BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(filePath));
    fos.write(content.getBytes("GBK"));
    fos.flush();
    fos.close();
  }
}

(3)通过FileWriter将字符串写入文件

public static void writeFileByFileWriter(String filePath, String content) throws IOException{
    File file = new File(filePath);
    synchronized (file) {
      FileWriter fw = new FileWriter(filePath);
      fw.write(content);
      fw.close();
    }
  }

目录操作
目录是一个文件可以包含其他文件和目录的列表。你想要在目录中列出可用文件列表,可以通过使用 File 对象创建目录,获得完整详细的能在 File 对象中调用的以及有关目录的方法列表。

创建目录
这里有两个有用的文件方法,能够创建目录:

mkdir( ) 方法创建了一个目录,成功返回 true ,创建失败返回 false。失败情况是指文件对象的路径已经存在了,或者无法创建目录,因为整个路径不存在。
mkdirs( ) 方法创建一个目录和它的上级目录。
以下示例创建 “/ tmp / user / java / bin” 目录:

import java.io.File;

public class CreateDir {
  public static void main(String args[]) {
   String dirname = "/tmp/user/java/bin";
   File d = new File(dirname);
   // Create directory now.
   d.mkdirs();
 }
}

编译并执行以上代码创建 “/ tmp /user/ java / bin”。

提示:Java 自动按 UNIX 和 Windows 约定来处理路径分隔符。如果在 Windows 版本的 Java 中使用正斜杠(/),仍然可以得到正确的路径。

目录列表
如下,你能够用 File 对象提供的 list() 方法来列出目录中所有可用的文件和目录

import java.io.File;

public class ReadDir {
  public static void main(String[] args) {

   File file = null;
   String[] paths;

   try{
     // create new file object
     file = new File("/tmp");

     // array of files and directory
     paths = file.list();

     // for each name in the path array
     for(String path:paths)
     {
      // prints filename and directory name
      System.out.println(path);
     }
   }catch(Exception e){
     // if any error occurs
     e.printStackTrace();
   }
  }
}

基于你/ tmp目录下可用的目录和文件,将产生以下结果:

test1.txt
test2.txt
ReadDir.java
ReadDir.class
(0)

相关推荐

  • java对指定目录下文件读写操作介绍

    最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动.为了省点工作量,想着能不能写个程序批处理了,减少点工作量,于是就有了下面的代码. 1.读取指定的(.java)文件: 复制代码 代码如下: public static String readFile(String path) throws IOException { File f = new File(path); StringBuffer res = new StringBuffer();

  • java读取excel文件并复制(copy)文件到指定目录示例

    复制代码 代码如下: mport java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List; import org.apach

  • Java实现读取文件夹下(包括子目录)所有文件的文件名

    在编程的过程中,经常会用到对文件的读写操作等.比如,找出某一个文件夹下的所有文件名等. 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序.可以作为某一个模块,在需要的时候直接使用. package src; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStrea

  • Java遍历输出指定目录、树形结构所有文件包括子目录下的文件

    下面通过一段代码介绍下Java输出指定目录.树形结构下的所有文件包括子目录中的文件的方法,并附有效果图. import java.io.File; public class ReadDirectory { // 文件所在的层数 private int fileLevel; /** * 生成输出格式 * @param name 输出的文件名或目录名 * @param level 输出的文件名或者目录名所在的层次 * @return 输出的字符串 */ public String createPri

  • java怎么创建目录(删除/修改/复制目录及文件)代码实例

    复制代码 代码如下: import java.io.*; public class FileOperate {   public FileOperate() {   } /**    * 新建目录    * @param folderPath String 如 c:/fqf    * @return boolean    */   public void newFolder(String folderPath) {     try {       String filePath = folder

  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    java获取系统路径字体.得到某个目录下的所有文件名.获取当前路径 复制代码 代码如下: package com.liuxing.test; import java.awt.GraphicsEnvironment;import java.io.File;public class Test { private static GraphicsEnvironment environment; /**  * @param args  */ public static void main(String[]

  • java 用递归获取一个目录下的所有文件路径的小例子

    复制代码 代码如下: private List<String> ergodic(File file,List<String> resultFileName){        File[] files = file.listFiles();        if(files==null)return resultFileName;// 判断目录下是不是空的        for (File f : files) {            if(f.isDirectory()){// 判

  • 浅析java创建文件和目录

    一,创建文件和目录的关键技术点如下: 1.File类的createNewFile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败 2.File类的mkdir方法根据抽象路径创建目录 3.File类的mkdirs方法根据抽象路径创建目录,包括创建不存在的父目录 4.File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀.后缀及文件所在的目录,如果不指定              目录,则存放在系统的临时文件夹下. 5.除 mkdirs方法外,以上

  • Java文件操作之按行读取文件和遍历目录的方法

    按行读取文件 package test; import java.io.*; import java.util.*; public class ReadTest { public static List<String> first_list; public static List<String> second_list; public ReadTest() { first_list = new LinkedList<>(); second_list = new Link

  • 详解Java的文件与目录管理以及输入输出相关操作

    Java中文件与目录管理 目录是管理文件的特殊机制,同类文件保存在同一个目录下不仅可以简化文件管理,而且还可以提高工作效率.Java 语言在 java.io 包中定义了一个 File 类专门用来管理磁盘文件和目录. 每个 File 类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息.通过调用 File 类提供的各种方法,能够创建.删除.重名名文件.判断文件的读写权限以及是否存在,设置和查询文件的最近修改时间等.不同操作系统具有不同的文件系统组织方式,通过使用 File 类对象,

随机推荐