Как реализовать операцию ACTION (переместить/переименовать, установить разрешения )в J2ME Bluetooth OBEX?

Спецификация Bluetooth FTP говорит, что мне нужно использовать операцию ACTION, вот страница

Но ClentSession предоставляет только операции GET и PUT и ничего не упоминается в javadocs.

вот как выглядит операция создания файла, это довольно просто

    public void create() throws IOException {
        HeaderSet hs = cs.createHeaderSet();
        hs.setHeader(HeaderSet.NAME, file);
        op = cs.put(hs);
        OutputStream os = op.openOutputStream();
        os.close();
        op.close();
    }

Вопрос 1 :Как реализовать операцию ACTION с пользовательскими заголовками для выполнения перемещения/переименования и установки разрешений? Это должно быть возможно без JSR82 OBEX API. Пожалуйста, помогите мне сделать это.

Вопрос 2 :Я понял, как установить разрешения? Согласно OBEX _Errata Compiled For 1.3.pdf (спасибо alanjmcf!)

1

2

Итак, чтобы установить только чтение -, я должен сделать следующее :

    int a = 0;

    //byte 0 //zero
    //byte 1 //user
    //byte 2 //group
    //byte 3 //other

    //set read for user
    a |= (1 << 7); //8th bit - byte 1, bit 0 -> set to 1
    // a = 10000000

    //for group
    a |= (1 << 15); //16th bit - byte 2, bit 0 -> set to 1
    // a = 1000000010000000

    //for other
    a |= (1 << 23); //24th bit - byte 3, bit 0 -> set to 1
    // a = 100000001000000010000000

    //or simply
    private static final int READ = 8421504 //1000,0000,1000,0000,1000,0000
    int value = 0 | READ;

    //========== calculate write constant =========
    a = 0;
    a |= (1 << 8); //write user
    a |= (1 << 16); //write group
    a |= (1 << 24); //write other
    // a = 1000000010000000100000000
    private static final int WRITE = 16843008 // 1,0000,0001,0000,0001,0000,0000

    //========= calculate delete constant ==========
    a = 0;
    a |= (1 << 9); //delete user
    a |= (1 << 17); //delete group
    a |= (1 << 25); //delete other
    //a = 10000000100000001000000000
    private static final DELETE = 33686016; //10,0000,0010,0000,0010,0000,0000

    //========= calculate modify constant ==========
    a = 0;
    a |= (1 << (7 + 7)); //modify user
    a |= (1 << (15 + 7)); //modify group
    a |= (1 << (23 + 7)); //modify other
    //a = 1000000010000000100000000000000
    private static final MODIFY = 1077952512; // 100,0000,0100,0000,0100,0000,0000,0000


    // now, if i want to set read-write-delete-modify, I will do the following:
    int rwdm = 0 | READ | WRITE | DELETE | MODIFY;
    // and put the value to the header... am I right?

, если правильно, единственной проблемой остается вопрос 1 :как мне сделать операцию ACTION и как установить заголовки.

5
задан Glorfindel 19 August 2019 в 15:15
поделиться