Как использовать FTP в OBEX для удаления и копирования файла на целевое устройство через Bluetooth-код Bluetooth? - PullRequest
0 голосов
/ 14 декабря 2011

Мне нужно заменить файл старой версией в устройстве назначения через Bluetooth. Я знаю, что профили OBEX (FTP и OPP) необходимы для этого. Но я не знаю, как можно удалить старую версию и скопировать новую версию файла в целевой каталог (код Java).

Можете ли вы помочь мне, пожалуйста?

1 Ответ

1 голос
/ 01 мая 2012

Для выполнения операций с файлами вы должны сначала перейти в каталог, где находится файл.Например, если вам нужно попасть в / root / directory / subdir /, вы должны вызвать setPath три раза

    setPath(""); // to get to /root/
    setPath("directory") // get to /root/directory/
    setPath("subdir") // get to root/directory/subdir/

Весь код, написанный ниже, предназначен для J2ME. Я использую этот метод для установки пути с разделителями (Например, / root / dir /)

    private void moveToDirectory(String dir) throws IOException {
        RE r = new RE("/"); // where RE is me.regexp.RE
        setDir("");
        String[] dirs = r.split(dir);
        for (int i = 1; i < dirs.length; i++) setDir(dirs[i]);
    }

Чтобы удалить файл, откройте операцию PUT для него и закройте его или используйте метод удаления в ClientSession.

    public void delete() throws IOException {
        HeaderSet hs = cs.createHeaderSet(); // where cs is an opened ClientSession
        hs.setHeader(HeaderSet.NAME, file); // file - is a filename String, no slashes should be used
        cs.delete(hs);
    }

Есливам нужно заменить файл, который вам, вероятно, не нужен для вызова метода удаления, просто откройте OutputStream и запишите в него новый

    public OutputStream openOutputStream() throws IOException {
        HeaderSet hs = cs.createHeaderSet();
        hs.setHeader(HeaderSet.NAME, file);
        Operation op = cs.put(hs); // Operation should be global, so you can close it after you done
        return op.openOutputStream();
    }

, не забудьте закрыть операцию после того, как вы закончили с потоками.

...