Zip4j использует полностью java-код без поддержки собственного кода, и именно поэтому он лучше подходит для меня. Zip4j предоставляет следующие функции:
CreatePasswordProtectedZipExample.java
import java.io.File;
import java.util.ArrayList;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;
public class CreatePasswordProtectedZipExample
{
public static void main(String[] args)
{
try {
//This is name and path of zip file to be created
ZipFile zipFile = new ZipFile("C:/temp/test.zip");
//Add files to be archived into zip file
ArrayList<File> filesToAdd = new ArrayList<File>();
filesToAdd.add(new File("C:/temp/test1.txt"));
filesToAdd.add(new File("C:/temp/test2.txt"));
//Initiate Zip Parameters which define various properties
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compression
//DEFLATE_LEVEL_FASTEST - Lowest compression level but higher speed of compression
//DEFLATE_LEVEL_FAST - Low compression level but higher speed of compression
//DEFLATE_LEVEL_NORMAL - Optimal balance between compression level/speed
//DEFLATE_LEVEL_MAXIMUM - High compression level with a compromise of speed
//DEFLATE_LEVEL_ULTRA - Highest compression level but low speed
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
//Set the encryption flag to true
parameters.setEncryptFiles(true);
//Set the encryption method to AES Zip Encryption
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
//AES_STRENGTH_128 - For both encryption and decryption
//AES_STRENGTH_192 - For decryption only
//AES_STRENGTH_256 - For both encryption and decryption
//Key strength 192 cannot be used for encryption. But if a zip file already has a
//file encrypted with key strength of 192, then Zip4j can decrypt this file
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
//Set password
parameters.setPassword("howtodoinjava");
//Now add files to the zip file
zipFile.addFiles(filesToAdd, parameters);
}
catch (ZipException e)
{
e.printStackTrace();
}
}
}
В соответствии с Linux, deamons простые фоновые процессы. Никакие специальные методы управления (например, start()
, stop()
) не используются в качестве в Windows. Создайте свой сервис как простое (консоль) приложение и выполните его в фоновом режиме. Используйте инструмент как daemonize
, чтобы запустить программу как демона Unix и не забыть определять mono
как программу, которая будет активирована.
, Как отмечено другими, моносервис является хостом для выполнения сервисов, созданных с ServiceProcess
блок. Сервисы, созданные для Windows, могут использовать этот метод для выполнения неизмененный в соответствии с Linux. Можно управлять сервисом путем отправки сигналов в процесс (см. страницу справочника).
То, как я это делал в прошлом, - это скомпилировать приложение .Net как консольное приложение, а затем на сервере Linux создать скрипт запуска в каталоге initscripts.
Очевидно, что в Linux нет служб Windows, и демоны, которые запускаются из каталогов rc.d при запуске, являются его эквивалентами. Все, что делает большинство скриптов rc.d, - это запускает различные приложения в фоновом потоке, поэтому в этом нет ничего сложного. Единственная дополнительная работа заключается в том, что вам нужно написать сценарий оболочки Linux для запуска и, если вы хотите, остановить службу.
Можно ли использовать моносервис обернуть его?
См. этот вопрос .