Blackberry - Как скопировать файлы на SD-карту, используя поток ввода / вывода? - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь скопировать папку с активами Blackberry на SD-карту, используя поток ввода / вывода.Однако я не могу заставить это работать.При запуске симулятора Blackberry появляется сообщение об ошибке, указывающее error: cannot find symbol inConn.close(); & outConn.close();.Может кто-нибудь посоветовать, пожалуйста, что я делаю не так?

import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import javax.microedition.io.*;
import javax.microedition.io.file.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.json.me.JSONArray;

public static PluginResult execute(JSONArray args) {
String[] resourseFileNames = {"file1","file2"."file3"};
final int length = resourseFileNames.length;

for(int i=0; i<length; i++) {
    String srcFile = "file:///store/home/user/sample/www" + resourseFileNames[i];
    FileConnection srcConn = (FileConnection) Connector.open(srcFile, Connector.READ);
    InputStream in = srcConn.openInputStream();
    String dstFile = "file:///SDCard/MyAppName/www" + resourseFileNames[i];
    FileConnection dstConn = (FileConnection)Connector.open(dstFile, Connector.WRITE);
    OutputStream out = dstConn.openOutputStream();
    // Copy the bits from instream to outstream
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    inConn.close();
    out.close();
    outConn.close();
}
    String value = "OK";
return new PluginResult(PluginResult.Status.OK, value);
}

Я использую Phonegap Если это имеет какое-то значение.Спасибо.

1 Ответ

3 голосов
/ 17 марта 2012

Вы не правильно открываете потоки. Вместо этого вам следует использовать отдельный FileConnection для файлов источника и назначения. Тогда используйте FileConnection # openInputStream () для открытия InputStream и FileConnection # openOutputStream () для открытия OutputStream.

Фрагмент кода:

for(int i=0; i<length; i++) {
    try {
        String srcFile = "file:///store/home/user/sample/www" + resourseFileNames[i];
        FileConnection srcConn = (FileConnection) Connector.open(srcFile, Connector.READ);
        InputStream in = srcConn.openInputStream();

        String dstFile = "file:///SDCard/myAppName/www" + resourseFileNames[i];
        FileConnection dstConn = (FileConnection)Connector.open(dstFile, Connector.WRITE);
        OutputStream out = dstConn.openOutputStream();

        // Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
           out.write(buf, 0, len);
        }

        in.close();
        srcConn.close();

        out.close();
        dstConn.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

ОБНОВЛЕНИЕ 1 : исправлено несколько опечаток, из-за которых «не удалось найти символ» ошибка.

ОБНОВЛЕНИЕ 2 : окружение кода с помощью try / catch (перехват IOException).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...