Тут на коленке лепил код для кодера/декодера...
для вывода ошибки в бридж использовал "подход"
На 7-ке будет работать, на 8-ке - зависит от версии жвм (в позних версиях могет не быть sun.misc.*)
использовать можно и через бридж
java класс можно скомпилить и использовать с командной строки: java Base64 <file from> [file to]
file from - обязательный путь к исходному файлу
file to - путь к результату (если не указан - выведет в dst.out)
для вывода ошибки в бридж использовал "подход"
На 7-ке будет работать, на 8-ке - зависит от версии жвм (в позних версиях могет не быть sun.misc.*)
использовать можно и через бридж
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);
}
}
}
Visual Basic:
%REM
Library FileUtilsLS
Created Feb 6, 2012 by Michael N. Cholokov
Description:
%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:
%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:
Call 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 (Len(jError.errorMsg) = 0) 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
file from - обязательный путь к исходному файлу
file to - путь к результату (если не указан - выведет в dst.out)