Base64

Тема в разделе "Lotus + Java + LS2J", создана пользователем lmike, 13 фев 2012.

  1. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    Тут на коленке лепил код для кодера/декодера...
    для вывода ошибки в бридж использовал "подход" http://codeby.net/forum/threads/45176.html?vi...st&p=218642
    на 7-ке будет работать, на 8-ке - зависит от версии жвм (в позних версиях могет не быть sun.misc.*)
    использовать можно и через бридж

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"java часть"</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import java.io.*;

    public class Base64 {
    public void decodeFile(String ifname, String ofname) throws Exception {
    String sErr = null;
    try {
    byte decoded[] = new sun.misc.BASE64Decoder().decodeBuffer(new FileInputStream(ifname));
    // save it to a binary stream
    FileOutputStream fos = null;
    try {
    fos = new FileOutputStream(ofname);
    }
    catch (IOException e) {
    e.printStackTrace();
    }
    fos.write(decoded);
    fos.close();
    }
    catch (IOException e1) {
    e1.printStackTrace();
    sErr = e1.getLocalizedMessage();
    System.out.println("send error > " + sErr);
    }
    finally {
    if (sErr != null) {throw new Exception(sErr);}
    }
    }

    public static void main (String[] args) {
    final Base64 obj = new Base64();
    final int params = args.length;
    assert params < 1;
    final String ifname = args[0];
    String ofname = "dst.out";
    if (params >= 2) {ofname = args[1];}
    try {
    obj.decodeFile(ifname, ofname);
    }
    catch(Exception e){
    e.printStackTrace();
    }
    finally {
    System.exit(0);
    }
    }
    }[/CODE]
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"LS2J"</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    %REM
    Library FileUtilsLS
    Created Feb 6, 2012 by Michael N. Cholokov
    Description: Comments for Library
    %END REM

    Option Public
    Option Declare
    Use "ErrorHandling"
    Use "FileUtils"

    Public jSession As JavaSession
    Sub Initialize
    Set jSession= New JAVASESSION
    End Sub

    %REM
    Sub DecodeFile
    Description: Comments for Sub
    %END REM

    Sub DecodeFile(inFile As String, outFile As String)
    On Error GoTo ErrH
    Dim Base64 As JAVACLASS
    Dim Base64obj As JAVAOBJECT
    Set Base64=jSession.GetClass({Base64})
    Set Base64obj=Base64.CreateObject()
    Print {decoding...}
    Call Base64obj.decodeFile(inFile, outFile)
    Print {exit}
    Quit:
    Exit Sub
    ErrH:
    RaiseError_mod
    Resume Quit
    End Sub
    Function RaiseError_mod() As String
    Dim jError As JavaError
    Dim modInfo As String  
    modInfo = GetThreadInfo(LSI_THREAD_MODULE) & "::" & GetThreadInfo(LSI_THREAD_CALLPROC) & ": "
    Set jError = jSession.getLastJavaError()
    Dim es As String
    If (jError.errorMsg = "") Then
    es=modInfo
    If (Err = 0) Then
    es = es + "Manually raised an error"
    Else
    es = es + "Run time error: (" + Trim(Str(Err)) + ") " + Error$ + " at line: "+ Trim(Str(Erl))
    End If
    Else
    es=modInfo+"Error at line " & Erl & ": " & jError.errorMsg
    jSession.ClearJavaError        
    End If
    Print es
    RaiseError_mod=es
    End Function
    java класс можно скомпилить и использовать с командной строки: java Base64 <file from> [file to]
    file from - обязательный путь к исходному файлу
    file to - путь к результату (если не указан - выведет в dst.out)
     
Загрузка...

Поделиться этой страницей