📄 filecontrol.java
字号:
package cn.zqk.utils;
import java.util.Enumeration;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.file.FileSystemRegistry;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.List;
import cn.zqk.ui.*;
public class FileControl {
private static ClearReport clearReport ;
//delete garbage files
public void Dealwith(){
ListDeleteFiles();
}
// public void ShowReport(){
// clearReport = new ClearReport();
// GarbageClear.instance.disp.setCurrent(clearReport);
// }
public void ListDeleteFiles() {
new Thread() {
private String clearinfo;
public void run() {
try {
FileConnection fc = null;
Enumeration enums = null;
String str = "";
List list;
String strpre = ""; // use it to compare with GarbageClear.instance.deleinfo,if equals ,then delete function end flag;
// and set the
/**
* 打开一个 文件/文件夹 ,可以以三种方式打开:READ、READ_WRITE、WRITE。
* 如果没有指定第二个参数,则默认为READ_WRITE方式。
* 注意文件夹的路径写法,路径最后有“/”,则表示打开的是文件夹。
* 文件路径的写法有很多种,这里的路径写法适合与索爱的机型。
* 比如: MOTO:file:///e/other/notes
*/
System.out.println("dircount ="+ GarbageClear.instance.dircount);
GarbageClear.instance.teststr ="*"+ GarbageClear.instance.dircount;
for (int n = 0; n < GarbageClear.instance.dircount; n++) {
System.out.println("every is " + GarbageClear.instance.filepath[n]);
GarbageClear.instance.teststr += GarbageClear.instance.filepath[n];
if (GarbageClear.instance.filepath[n]!=""){
try{
fc = (FileConnection) Connector.open(GarbageClear.instance.filepath[n],Connector.READ);
/**
* 注意,上面的方法在文件不存在的情况下,仍能执行成功,所以我们要用下面的方法
* 判断文件是否存在,此函数要求文件是可读的, 即文件打开方式不能是以 Connector.WRITE
* 方式打开的 否则会抛出 IllegalModeException 异常
*/
// GarbageClear.instance.teststr +="open dir \n";
if (fc.exists()) {
/**
* 下面的方法是判断打开的文件是否为文件夹
*/
GarbageClear.instance.teststr2 =" --is dir";
System.out.println("exist this dir");;
boolean isfolder = fc.isDirectory();
if (!isfolder) {
return;
}
list = new List("list", ChoiceGroup.IMPLICIT);
/**
* 获取目录下所有文件, 注意此方法返回的是所有文件的名字。 要求文件的打开方式是可读
*/
enums = fc.list();
while (enums.hasMoreElements()) {
str = enums.nextElement().toString();
list.append(str, null);
//print filename
System.out.println(str);
GarbageClear.instance.savefilecount ++;
//print filesize
System.out.println(GarbageClear.instance.savefilecount);
clearinfo = " delete " + str + "\n";
// change the clearinfo in ClearReport canvas
deleteFile(GarbageClear.instance.filepath[n] + str);
GarbageClear.instance.deleinfo = " delete "+ GarbageClear.instance.filepath[n] + str + "\n";
}
//set the end info of deleinfo
GarbageClear.instance.deleinfo = "";
//set the end condition of repaint(); 我不知道为什么如果文件多就不能在ClearReport中显示正确的文件数和节省的储存空间,只能让线程一直执行了
// GarbageClear.instance.finished = true;
}else{
GarbageClear.instance.teststr2 =" isn't dir";
}
fc.close();
}catch (Exception e){
GarbageClear.instance.teststr2 ="open dir error";
}
}
}
} catch (Exception e) {
System.out.println("get file error!!!!!!");
}
}
}.start();
}
/*删除文件*/
public void deleteFile(String path) {
try {
FileConnection fc = (FileConnection) (Connector.open(path,Connector.READ_WRITE));
if (fc.exists())
{
long size = fc.fileSize();
GarbageClear.instance.savefilesize += size;
System.out.println("filesize is " + size);
System.out.println("GarbageClear.instance.savefilesize is " + GarbageClear.instance.savefilesize);
fc.delete();
}
} catch (Exception e) {
System.out.println("deleteFileErr:" + e.toString());
}
}
//for testing............list the nokia roots dir
public void listroots(){
new Thread() {
private String clearinfo;
public void run() {
GarbageClear.instance.deleinfo= "";
try {
Enumeration emun = FileSystemRegistry.listRoots();
String tmp = "";
while (emun.hasMoreElements()) {
tmp = emun.nextElement().toString();
GarbageClear.instance.deleinfo += tmp + "\n";
}
} catch (Exception e) {
System.out.println("get file error!!!!!!");
}
}
}.start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -