2010-05-28 3 views
0

Мне нужно предоставить файл двоичной лицензии для java-программы. Каков наилучший способ сделать это? Данные будут меняться все время, поэтому я не хочу писать файл, а затем каждый раз читаю его.Отправка сложных аргументов в java-программу

данные поступают из PHP страницы

+0

от чего вы будете поставлять файл в программу java? объясните более ясно: «будет постоянно меняться». – OlimilOops

+0

Передача файла программе в сложный аргумент? Если вам нужно часто менять его, просто кешируйте предыдущие данные лицензии и проверяйте время доступа к файлу, чтобы определить, нужно ли вам обновлять или нет. – corsiKa

+0

Данные взяты из страницы PHP ... извините – jax

ответ

2

Я буду использовать команду PHP Exec(), который действует так же, как ваш набирали в командной строке

В классе Java, вы будете иметь метод с именем главной, которые выглядят как это:

public static void main(String[] args) { 
    //If this is just a single binary string, args[0] will contain the license. 
} 

Если вы отправляете лицензию в качестве первого аргумента, args[0] будет ваша входящая лицензия.

Теперь, сказав это, вы можете захотеть, чтобы base64 закодировал лицензию перед ее отправкой. Это позволит убедиться, что на файл лицензии не влияет набор символов при его передаче.

Для этой цели PHP имеет функцию base64_encode().

Java странно не имеет встроенного декодера Base64 (официально не официально). Apache Commons Codec содержит декодер.

Опять же, предполагая, что лицензия является первой вещью прошло в:

import org.apache.commons.codec.binary.Base64; 

public class GiveMeANameHere { 

    public static void main(String[] args) { 
     Base64 decoder = new Base64(); 
     byte[] license = decoder.decode(args[0]); 

     // Do whatever you need to with the license. 
     // Other strings passed in will appear as elements in args array 
    } 
} 

Не то, что код Java нужно будет передать банку Apache Commons Codec, как это путь к классам, используя либо -cp path/to/commons-codec-1.4.jar или если вы упаковать ваш как банку в файле манифеста.

0

что о передаче пути к файлу?
OK
Вы могли бы использовать что-то вроде "interprocesscommunication"
- Remote Method Invocation (RMI)
http://java.sun.com/products/jdk/rmi/
- Простой протокол доступа к объектам (SOAP)
http://www.soaprpc.com/software/
http://java.sun.com/xml/jaxm/
http://ws.apache.org/soap/features.html

+0

это не файл, это данные, передаваемые с PHP-страницы – jax

0

Походит вы хотите прочитать InputStream, поступающий напрямую через HTTP. Если вы закончите маршрут передачи файлов, Commons FileUpload выполнил для вас большую часть своей работы.

1

Сохраните URL-адрес файла лицензии в пользовательских настройках (java.util.prefs). Если пользовательские настройки являются новыми или URL-адрес и/или его содержимое больше недействительны, попросите пользователя новый URL-адрес (и сохраните его обратно в предпочтения). Затем вы можете получить содержимое URL-адреса java.net.URL.openStream() - так же хорошо подходит для файлов или веб-адресов.

Смежные вопросы