Свободный размер SD-карты - PullRequest
       34

Свободный размер SD-карты

0 голосов
/ 02 декабря 2011

Я хочу проверить свободный размер, доступный на SD-карте моего устройства.Я знаю FileConnection API.Как я могу проверить свободный размер SD-карты?

1 Ответ

2 голосов
/ 03 декабря 2011

Идея состоит в том, чтобы открыть соединение с файлом cfcard и вызвать на нем availableSize(). чтобы узнать правильное расположение карты памяти, прочитайте ее с System.getProperty(...). В некоторых устройствах вышеупомянутое свойство может не срабатывать, следовательно, создается новый путь из системного свойства имени карты памяти.

ПРИМЕЧАНИЕ: В некоторых устройствах имя хоста должно быть 'localhost', поэтому измените строку возврата в getFilehost () соответствующим образом.

PS: Поскольку это фрагмент кода, некоторые ссылки на формы / команды могут выдавать нулевой указатель, пожалуйста, разрешите его соответствующим образом.

Ниже приведен код с указанием доступного размера в байтах карты памяти

        String memoryCardPath = System.getProperty("fileconn.dir.memorycard");
        addToLogs(memoryCardPath);
        if (null == memoryCardPath) {
            displayAlert(null);
        }
        nativeHostname(memoryCardPath);
        addToLogs(nativeHostname);
        String path = buildPath(memoryCardPath.substring(getFilehost().length()));
        addToLogs(path);
        long availableSize = getAvailableSize(path);
        addToLogs(String.valueOf(availableSize)+" Bytes");
        if(availableSize == 0L) {
            String memoryCardName = System.getProperty("fileconn.dir.memorycard.name");
            addToLogs(memoryCardName);
            path = buildPath(memoryCardName + "/");
            addToLogs(path);
            availableSize = getAvailableSize(path);
            addToLogs(String.valueOf(availableSize)+" Bytes");
            if(availableSize == 0L) {
                displayAlert(null);
                return;
            }
        }

        displayAlert(String.valueOf(availableSize));

Методы поддержки

public String buildPath(String foldername) {
    if(null == foldername) {
        foldername = "";
    }
    addToLogs("[BP]"+getFilehost());
    addToLogs("[BP]"+foldername);
    return new StringBuffer().append(getFilehost()).append(foldername).toString();
}

String nativeHostname = null;
public void nativeHostname(String url) {
    String host = url.substring("file://".length());
    addToLogs("[NH]"+host);
    int index = host.indexOf('/');
    addToLogs("[NH]"+String.valueOf(index));
    if(index > 0) {
        nativeHostname = host.substring(0, index);
    } else {
        nativeHostname = "/";
    }
    addToLogs("[NH]"+nativeHostname);
}

public boolean tryLocalhost = false;
public String getFilehost() {
    final StringBuffer buf = new StringBuffer().append("file://");
    if (null != nativeHostname && nativeHostname.length() > 0) {
         buf.append(nativeHostname);
    }
    addToLogs("[GFH] "+buf.toString());
    return buf.toString();
}

public long getAvailableSize(String path) {
    FileConnection fcon = null;
    try {
        fcon = (FileConnection) Connector.open(path, Connector.READ);
        if(null != fcon && fcon.exists()) {
            return fcon.availableSize();
        } else {
            return 0L;
        }
    } catch (IOException ex) {
        ex.printStackTrace();
        addToLogs("[GAS]"+"ERROR : "+ex.getMessage());
        return 0L;

    } finally {
        try {
            fcon.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

public void displayAlert(String text) {
    Alert alert = new Alert(
            null == text ? "Warning" : "Info", 
            null == text ? "Memory card not available" : text, 
            null, 
            null == text ? AlertType.WARNING : AlertType.INFO);
    alert.setTimeout(Alert.FOREVER);
    Display.getDisplay(this).setCurrent(alert, Display.getDisplay(this).getCurrent());
}

public void addToLogs(String log) {
    log = null == log ? "null" : log;
    getFormLogs().append(new StringItem("", log+"\n"));
}
...