java代码删除文件_java代码删除文件夹

java用代码删除文件夹

import java.io.File;

public class DeleteThread extends Thread {

File[] files;

String filesname;

public DeleteThread(File[] files, String name) {

this.filesname = name;

this.files = files;

}

@Override

public void run() {

for (int i = 0; i < files.length; i++) {

try {

this.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

if ((files[i].isFile() || files[i].isHidden()) && files[i].getName().equals(filesname)) {

if (files[i].delete()) {

} else if (files[i].isDirectory()) {

File file = new File(files[i].getAbsolutePath());

DeleteThread t = new DeleteThread(file.listFiles(), filesname);

t.start();

}

}

//super.run();

}

}

在java中,可以使用InputStream对文件进行读取,就是字节流的输入。当读取文件内容进程序时,需要使用一个byte数组来进行存储,如此会有如下两个问题:

1.如何建立合适大小的byte数组,如果已知输入流的大小。

2.如果不知输入流的大小,则肯定需要建立一个很大的byte数组,那么byte中很可能有空的内容,那么如何正确合适的将byte数组的中的内容输出?

先看第一个问题:解决之道就是获取输入流的大小,创建此大小的byte数组。代码如下:view plaincopy to clipboardprint?

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()]; //创建合适文件大小的数组

in.read(b); //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()]; //创建合适文件大小的数组

in.read(b); //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

第二个问题:问题的解决之道就是获得输入流何时结束,它在byte中的尾索引位置。可以通过read()方法实现,read()返回读取的字节内容,当内容为空时返回-1。利用此特征可以解决第二个问题。代码如下:

view plaincopy to clipboardprint?

//同过判断文件的结尾来读取文件

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo02

{

public static void main(String args[]) throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[] = new byte[1024];

int len = 0;

int temp=0; //所有读取的内容都使用temp接收

while((temp=in.read())!=-1){ //当没有读取完时,继续读取

b[len]=(byte)temp;

len++;

}

in.close();

System.out.println(new String(b,0,len));

}

}

在java中,可以使用InputStream对文件进行读取,就是字节流的输入。当读取文件内容进程序时,需要使用一个byte数组来进行存储,如此会有如下两个问题:

1.如何建立合适大小的byte数组,如果已知输入流的大小。

2.如果不知输入流的大小,则肯定需要建立一个很大的byte数组,那么byte中很可能有空的内容,那么如何正确合适的将byte数组的中的内容输出?

先看第一个问题:解决之道就是获取输入流的大小,创建此大小的byte数组。代码如下:view plaincopy to clipboardprint?

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()]; //创建合适文件大小的数组

in.read(b); //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()]; //创建合适文件大小的数组

in.read(b); //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

第二个问题:问题的解决之道就是获得输入流何时结束,它在byte中的尾索引位置。可以通过read()方法实现,read()返回读取的字节内容,当内容为空时返回-1。利用此特征可以解决第二个问题。代码如下:

view plaincopy to clipboardprint?

//同过判断文件的结尾来读取文件

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo02

{

public static void main(String args[]) throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[] = new byte[1024];

int len = 0;

int temp=0; //所有读取的内容都使用temp接收

while((temp=in.read())!=-1){ //当没有读取完时,继续读取

b[len]=(byte)temp;

len++;

}

in.close();

System.out.println(new String(b,0,len));

}

}

String path=sourceData.get(localDataBrowser.focusPosition).getPath();

File file = new File(path);

file.setExecutable(true,false);

file.setReadable(true,false);

file.setWritable(true,false);

recurDelete(file);

public static void recurDelete(File f){

if(!f.exists())return;

if(f.isFile()){

f.delete();

return;

}

File[] files=f.listFiles();

for(int i= 0;i < files.length; i++){

recurDelete(files[i]);

}

f.delete();

/*if(f.isFile() || f.list().length == 0){

f.delete();

}

for(File fi:f.listFiles()){

if(fi.isDirectory()){

recurDelete(fi);

}

else{

fi.delete();

}

}

f.delete();*/

}

import java.io.File;

public class DeleteDirectory {

/**

* 删除空目录

* @param dir 将要删除的目录路径

*/

private static void doDeleteEmptyDir(String dir) {

boolean success = (new File(dir)).delete();

if (success) {

System.out.println("Successfully deleted empty directory: " + dir);

} else {

System.out.println("Failed to delete empty directory: " + dir);

}

}

/**

* 递归删除目录下的所有文件及子目录下所有文件

* @param dir 将要删除的文件目录

* @return boolean Returns "true" if all deletions were successful.

* If a deletion fails, the method stops attempting to

* delete and returns "false".

*/

private static boolean deleteDir(File dir) {

if (dir.isDirectory()) {

String[] children = dir.list();

//递归删除目录中的子目录下

for (int i=0; i

boolean success = deleteDir(new File(dir, children[i]));

if (!success) {

return false;

}

}

}

// 目录此时为空,可以删除

return dir.delete();

}

/**

*测试

*/

public static void main(String[] args) {

doDeleteEmptyDir("new_dir1");

String newDir2 = "new_dir2";

boolean success = deleteDir(new File(newDir2));

if (success) {

System.out.println("Successfully deleted populated directory: " + newDir2);

} else {

System.out.println("Failed to delete populated directory: " + newDir2);

}

}

}

/**

* 遍历删除SD卡中某一文件夹下的指定子文件夹及其子文件

*/

private String filePath = Environment.getExternalStorageDirectory()

.getAbsolutePath()+"/ttpod"; //SD卡中“天天动听”文件夹目录

private String[] fileName = new String[] { "song", "art",

"lyric"}; //删除ttpod文件夹下的三个文件夹及其子文件

private void deleteAllFiles(String filePath,String[] fileName){

File f=new File(filePath);

if(f.exists()){

for(int i=0;i

File file=new File(filePath+"/"+fileName[i]);

clear(file);

}

Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this, "文件不存在",Toast.LENGTH_SHORT).show();

}

}

/** 若将整个ttpod文件夹删除,则只需调用这个方法 */

private void clear(File file) {

if (file.exists()) { //指定文件是否存在

if (file.isFile()) { //该路径名表示的文件是否是一个标准文件

file.delete(); //删除该文件

} else if (file.isDirectory()) { //该路径名表示的文件是否是一个目录(文件夹)

File[] files = file.listFiles(); //列出当前文件夹下的所有文件

for (File f : files) {

clear(f); //递归删除

//Log.d("fileName", f.getName()); //打印文件名

}

}

file.delete(); //删除文件夹(song,art,lyric)

}

}

import java.io.File;

/**

* 操作文件帮助类

* @author sRoger.

*/

public final class OperationFileHelper {

/**

* 递归删除文件和文件夹

* @param file 要删除的根目录

*/

public static void RecursionDeleteFile(File file){

if(file.isFile()){

file.delete();

return;

}

if(file.isDirectory()){

File[] childFile = file.listFiles();

if(childFile == null || childFile.length == 0){

file.delete();

return;

}

for(File f : childFile){

RecursionDeleteFile(f);

}

file.delete();

}

}

}

public static void copyFile(String from, String to) {

int bytesum = 0;

try {

Runtime runtime = Runtime.getRuntime();

runtime.exec("su");

runtime.exec("mount -o remount,rw /system");

runtime.exec("chmod 777 "+"/system");

File oldfile = new File(from);

if(oldfile.exists()){

runtime.exec("chmod 777 "+ from);

InputStream inStream = new FileInputStream(from);

FileOutputStream fs = new FileOutputStream(to);

byte[] buffer = new byte[1444];

while (true) {

int byteread = inStream.read(buffer);

if (byteread != -1) {

bytesum += byteread;

fs.write(buffer, 0, byteread);

} else {

inStream.close();

return;

}

}

}

} catch (Exception e) {

e.printStackTrace();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值