java编写的文件管理器代码分享

作者:hebedich 时间:2023-11-20 13:28:52 

比较适合新手。逻辑上仍然有点问题。可以用于学习java文件操作

下载地址:http://yun.baidu.com/share/link?shareid=4184742416&uk=1312160419

下面是主要的JAVA文件操作代码

FileHelp.java


package self.yy.filesystem.fileutil;

import android.content.Context;
import android.util.Log;
import android.widget.Toast;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.nio.channels.FileChannel;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
* 文件的相关帮助类
*/
public class FileHelp {
 private static final String TAG = "FileHelp";

public static final String JPG = ".jpg";
 public static final String PNG = ".png";

public static final String MP3 = ".mp3";
 public static final String MP4 = ".mp4";
 public static final String APK = ".apk";

//上下文
 private static Context context;

/**
  * txt文本
  */
 public static int ISTXT = 0;

private static String TXT = ".txt";

/**
  * 文件删除
  */
 public static boolean deletfile(File file) {
   if (file.isDirectory()) {
     if (file.listFiles().length > 0) {
       for (File i : file.listFiles()) {
         deletfile(i);
       }
     } else {
       file.delete();
     }
   } else {
     file.delete();
   }
   file.delete();
   return true;
 }

/**
  * 新建文件夹
  * 返回true 文件创建成功
  * 返回false 文件创建失败 ->文件存在
  * 返回true 文件创建成功,返回false 文件创建失败 (文件存在、权限不够)
  */
 public static boolean creatFile(String filename, String path) {
   File file = new File(path + File.separator + filename);
   if (file.exists()) {
     return false;
   } else {
     file.mkdir();
     return true;
   }
 }

/**
  * 创建自定义文件类型文件
  * 随意为文件夹
  * 0 txt文本
  *
  * @return boolean
  * 返回true 文件创建成功,返回false 文件创建失败 (文件存在、权限不够)
  * *
  */
 public static boolean creatFile(String filename, String path, int type) {
   String ptr = path + File.separator + filename;
   File file;
   switch (type) {
     case 0:
       file = new File(ptr + TXT);
       break;
     default:
       file = new File(ptr);
       break;
   }
   if (file.exists()) {
     return false;
   } else {
     try {
       file.createNewFile();
       return true;
     } catch (IOException e) {
       return false;
     }
   }
 }

/**
  * 文件重名
  *
  * @param name 新创建的文件名
  * @param file 创建文件的地方
  */
 public static boolean reName(String name, File file) {
   String pathStr = file.getParent() + File.separator + name;
   return file.renameTo(new File(pathStr));
 }

/**
  * 文件复制
  *
  * @param oldFile  要被复制的文件
  * @param toNewPath 复制到的地方
  * @return boolean trun 复制成功,false 复制失败
  * *
  */
 public static boolean copeyFile(File oldFile, String toNewPath) {
   String newfilepath = toNewPath + File.separator + oldFile.getName();

File temp = new File(newfilepath);
   //判断复制到的文件路径是否存在相对文件,如果存在,停止该操作
   if (temp.exists()) {
     return false;
   }
   //判断复制的文件类型是否是文件夹
   if (oldFile.isDirectory()) {
     temp.mkdir();
     for (File i : oldFile.listFiles()) {
       copeyFile(i, temp.getPath());
     }
   } else {
     //如果是文件,则进行管道复制
     try {
       //从文件流中创建管道
       FileInputStream fis = new FileInputStream(oldFile);
       FileChannel creatChannel = fis.getChannel();
       //在文件输出目标创建管道
       FileOutputStream fos = new FileOutputStream(newfilepath);
       FileChannel getChannel = fos.getChannel();
       //进行文件复制(管道对接)
       getChannel.transferFrom(creatChannel, 0, creatChannel.size());

getChannel.close();
       creatChannel.close();
       fos.flush();
       fos.close();
       fis.close();
     } catch (Exception e) {
       Log.i(TAG, "copey defeated,mebey file was existed");
       e.printStackTrace();
       return false;
     }
   }
   return true;
 }

/**
  * 文件剪切
  *
  * @param oldFile   要被剪切的文件
  * @param newFilePath 剪切到的地方
  * @return boolean trun 剪切成功,false 剪切失败
  */
 public static boolean cutFile(File oldFile, String newFilePath) {
   if (copeyFile(oldFile, newFilePath)) {
     oldFile.delete();
     return true;
   } else {
     return false;
   }
 }

/**
  * 获取对应文件类型的问件集
  *
  * @param dir 文件夹
  * @param type 文件类型,格式".xxx"
  * @return List<file> 文件集合
  */
 public static List<File> getTheTypeFile(File dir, String type) {
   List<File> files = new ArrayList<File>();
   for (File i : dir.listFiles()) {
     String filesTyepe = getFileType(i);
     if (type.equals(filesTyepe)) {
       files.add(i);
     }
   }
   return files;
 }

/**
  * 获取文件类型
  *
  * @param file 需要验证的文件
  * @return String 文件类型
  * 如:
  * 传入文件名为“test.txt”的文件
  * 返回 .txt
  * *
  */
 public static String getFileType(File file) {
   String fileName = file.getName();
   if (fileName.contains(".")) {

String fileType = fileName.substring(fileName.lastIndexOf("."),
         fileName.length());
     return fileType;
   } else {
     return null;
   }
 }

/**
  * 获取文件最后操作时间类
  *
  * @param file 需要查询的文件类
  * @return “yy/MM/dd HH:mm:ss”的数据字符串
  * 如:
  * 14/07/01 01:02:03
  */
 public static String getCreatTime(File file) {
   long time = file.lastModified();
   Calendar calendar = Calendar.getInstance();
   SimpleDateFormat dateFormat = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
   String date = dateFormat.format(calendar.getTime());
   return date;
 }

}

以上所述就是本文的全部内容了,希望能够对大家学习java有所帮助。

标签:java,文件管理器
0
投稿

猜你喜欢

  • Java中如何调用cmd压缩文件

    2023-12-09 13:37:02
  • jdk15的安装与配置全过程记录

    2023-01-06 05:45:10
  • Unity 按钮事件封装操作(EventTriggerListener)

    2022-07-08 10:07:08
  • 史上最简洁C# 生成条形码图片思路及示例分享

    2023-08-24 15:50:25
  • SpringBoot创建RSocket服务器的全过程记录

    2022-10-24 10:20:25
  • idea中将单个java类导出为jar包文件的方法

    2022-08-18 11:15:55
  • Java的Spring框架中bean的继承与内部bean的注入

    2023-06-17 18:50:44
  • SpringBoot 3.0 新特性内置声明式HTTP客户端实例详解

    2022-11-25 13:47:20
  • SpringBoot @PostConstruct原理用法解析

    2022-02-02 18:05:46
  • MyBatis图文并茂讲解注解开发一对多查询

    2023-02-18 08:18:40
  • C#迷你猜数实例分析

    2023-11-02 16:10:49
  • springboot后端配置多个数据源、Mysql数据库的便捷方法

    2022-05-01 07:21:37
  • Java版微信公众号支付开发全过程

    2023-01-31 16:35:46
  • 关于springboot2整合lettuce启动卡住问题的解决方法

    2022-08-24 09:29:16
  • Android实现向Launcher添加快捷方式的方法

    2022-09-14 09:26:41
  • 详解MyBatis直接执行SQL查询及数据批量插入

    2021-12-02 17:52:08
  • SpringBoot整合Elasticsearch游标查询的示例代码(scroll)

    2022-02-11 02:02:13
  • Android View背景选择器编写技巧

    2023-09-16 21:37:43
  • maven的生命周期及常用命令介绍

    2022-03-10 17:21:16
  • java 创建线程的四种方式

    2023-11-02 21:38:07
  • asp之家 软件编程 m.aspxhome.com