与设备无法进行调试怎么走

2014-11-19

  好吧,我承认,这是后来编辑的。嘿嘿借着上面的扑捉异常来做了一个不是很大变更的扑捉日志。

就我目前得知,与设备连接调试就两种方式,一种间接,一种直接。间接就是指网络连接,通常就是通过QADB这个网络连接的方式。但是这里有很多自己定制的Android的厂商会让自己的设备不被侵犯的话,至少应该已经把这个功能给关掉了。直接的方式就是通过我们都知道的USB。手机还好说,那如果是客户端也是一个USB口呢?你的电脑的口就会与客户端的口一样,双公口。其实,市场上也有买这样的。但是,这里就给出一个不用折腾的方法嘛。嘿嘿

    写一个实例,这样如果已经创建了,就不会再创建。然后看看里面的方法:

package com.lhl.exception;

import java.io.File;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

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

/**
 * this is a class to get the request and the response.......it have maked the
 * client interaction with server
 * 
 * @author Catherine.Brain
 */
public class CrashInteraction {

    /**
     * to write the log int he localpath
     */
    public static String logIPath = "mnt/sdcard/Android/logG";
    // int count = 0;
    GetFileSize getSize;
    private static CrashInteraction INSTANCE = new CrashInteraction();
    Context mContext;
    String request;

    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");

    private CrashInteraction() {

    }

    /**
     * 获取CrashInteraction实例 ,单例模式
     * 
     * @return
     */
    public static CrashInteraction getInstance() {
        return INSTANCE;
    }

    public void init(Context context) {
        // TODO Auto-generated method stub
        mContext = context;
        getSize = new GetFileSize(logIPath);

    }

    public void initStr(String str) {

        request = str;
        getSize.toDoFile();
        saveCrashInfo(request);
    }

    private File saveCrashInfo(String str) {

        StringBuffer sb = new StringBuffer();

        sb.append(str);

        try {
            long timestamp = System.currentTimeMillis();
            String time = formatter.format(new Date());

            File dir = new File(logIPath);

            String fileName = "get" + time + "-" + timestamp + ".log";
            if (!dir.exists()) {
                System.out.println("dir.mkdirs();");
                dir.mkdirs();
            }

            File file = new File(dir, fileName);
            if (!file.exists()) {
                file.createNewFile();
            }
            FileOutputStream fos = new FileOutputStream(file);

            fos.write(sb.toString().getBytes());
            fos.close();

            return file;
        } catch (Exception e) {
            System.out.println("an error occured while writing file..." + e);
        }

        return null;
    }

    /**
     * 删除文件夹所有内
     * 
     */
    public boolean deleteFile(File file) {
        boolean isSuccess = false;
        if (file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文
                file.delete(); // delete()方法 你应该知
            } else if (file.isDirectory()) { // 否则如果它
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
                    this.deleteFile(files[i]); // 把每个
                }
            }
            file.delete();
            isSuccess = true;
        } else {
            isSuccess = false;
        }
        return isSuccess;
    }
}

另外还有一个打辅助的类:

package com.lhl.exception;

import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;

/**
 * 
 * to get the sdCard size or the file size only you want
 * 
 * @author Catherine.Brain
 * */
public class GetFileSize {
    String logPath;

    public GetFileSize(String path) {
        logPath = path;

    }

    public void toDoFile() {
        try {
            long l = 0;
            File ff = new File(logPath);
            if (ff.exists()) {
                if (ff.isDirectory()) {
                    // System.out.println("文件夹个数           " + getlist(ff));
                    l = getFileSize(ff);
//                    System.out.println(logPath + "目录的大小为:" + FormetFileSize(l));
                } else if (ff.isFile()) {

                    // System.out.println("     文件个数           1");
                    l = getFileSizes(ff);
//                    System.out.println(logPath + "文件的大小为:" + FormetFileSize(l));
                }
            } else {
//                System.out.println("日志文件路径不存在。。。");
            }
            if (l >= 10000) {
//                System.out.println("delete");
                deleteFile(new File(logPath));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public long getFileSizes(File f) throws Exception {// 取得文件大小
        long s = 0;
        if (f.exists()) {
            FileInputStream fis = null;
            fis = new FileInputStream(f);
            s = fis.available();
        } else {
            f.createNewFile();
            System.out.println("文件不存在");
        }
        return s;
    }

    // 递归
    public long getFileSize(File f) throws Exception// 取得文件夹大小
    {
        long size = 0;
        File flist[] = f.listFiles();
        for (int i = 0; i < flist.length; i++) {
            if (flist[i].isDirectory()) {
                size = size + getFileSize(flist[i]);
            } else {
                size = size + flist[i].length();
            }
        }
        return size;
    }

    public 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;
    }

    public long getlist(File f) {// 递归求取目录文件个数
        long size = 0;
        File flist[] = f.listFiles();
        size = flist.length;
        for (int i = 0; i < flist.length; i++) {
            if (flist[i].isDirectory()) {
                size = size + getlist(flist[i]);
                size--;
            }
        }
        return size;
    }

    /**
     * 删除文件夹所有内容
     * 
     */
    public static boolean deleteFile(File file) {
        boolean isSuccess = false;
        if (file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文件
                file.delete(); // delete()方法 你应该知道 是删除的意思;
            } else if (file.isDirectory()) { // 否则如果它是一个目录
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
                    deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
                }
            }
            file.delete();
//            System.out.println("success");
            isSuccess = true;
        } else {
            isSuccess = false;
            System.out.println("failes");
        }
        return isSuccess;
    }
}

okay,这样你就能在对应的文件下面得到你要的日志文件了。

原文地址:https://www.cnblogs.com/Catherine-Brain/p/4109550.html