JAVA 文件操作

来源:互联网 发布:网络上小姐姐表示什么 编辑:程序博客网 时间:2024/06/05 22:29

源文地址

平常经常使用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();              }          }  
0 0