package util;
import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.filechooser.FileSystemView;
import com.google.gson.Gson;
import model.Disk;
import model.PcFile;
/**
* 文件的公共类
*
* @author 赵庆洋
*
*/
public class FileUtil {
/**
* 文件大小格式化
*
* @param fileS
* @return
*/
public static String FormetFileSize(long fileS) {
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString = "";
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "K";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "M";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "G";
}
return fileSizeString;
}
/**
* 获取硬盘的盘符
*
* @return
*/
public static String getDriver() {
List<Disk> disks = new ArrayList<Disk>();
// 获得当前文件系统类
FileSystemView systemView = FileSystemView.getFileSystemView();
// 桌面
Disk homeDisk = new Disk();
File file = systemView.getHomeDirectory();
homeDisk.setFileName(systemView.getSystemDisplayName(file));
homeDisk.setTotalSpace(FormetFileSize(file.getTotalSpace()));
homeDisk.setFreeSpace(FormetFileSize(file.getFreeSpace()));
homeDisk.setPath(file.getAbsolutePath());
disks.add(homeDisk);
// 我的文档
Disk myDisk = new Disk();
File myFile = systemView.getDefaultDirectory();
myDisk.setFileName(systemView.getSystemDisplayName(myFile));
myDisk.setTotalSpace(FormetFileSize(myFile.getTotalSpace()));
myDisk.setFreeSpace(FormetFileSize(myFile.getFreeSpace()));
myDisk.setPath(myFile.getAbsolutePath());
disks.add(myDisk);
// 列出所有的windows 磁盘
File[] files = File.listRoots();
for (int i = 0; i < files.length; i++) {
Disk disk = new Disk();
disk.setFileName(systemView.getSystemDisplayName(files[i]));
disk.setTotalSpace(FormetFileSize(files[i].getTotalSpace()));
disk.setFreeSpace(FormetFileSize(files[i].getFreeSpace()));
disk.setPath(files[i].getAbsolutePath());
disks.add(disk);
}
Gson gson = new Gson();
String jsonStr = gson.toJson(disks);
return jsonStr;
}
/**
* @param dir表示需要指定的盘符
*
*/
public static String getDirInTray(String path) {
File dir = new File(path);
List<PcFile> list = new ArrayList<PcFile>();
// 获取指定盘符下的所有文件列表。(listFiles可以获得指定路径下的所有文件,以数组方式返回)
File[] files = dir.listFiles();
// 如果该目录下面为空,则该目录的此方法执行
if (files == null) {
return "";
}// 通过循环将所遍历所有文件
for (int i = 0; i < files.length; i++) {
if (!files[i].isHidden()) {
PcFile pcFile = new PcFile();
pcFile.setFileName(files[i].getName());
pcFile.setFilePath(files[i].getAbsolutePath());
pcFile.setTotalSpace(FormetFileSize(files[i].getTotalSpace()));
pcFile.setFreeSpace(FormetFileSize(files[i].getFreeSpace()));
pcFile.setLength(files[i].length());
pcFile.setDirectory(files[i].isDirectory());
pcFile.setFile(files[i].isFile());
pcFile.setParent(files[i].getParent());
pcFile.setParentPath(files[i].getParentFile().getAbsolutePath());
list.add(pcFile);
}
}
Gson gson = new Gson();
String jsonStr = gson.toJson(list);
return jsonStr;
}
}