2014-10-08 2 views
-4

Я выполняю проект по обнаружению вторжений на основе хоста с использованием набора данных ADFA-LD, теперь я делаю модуль выделения функций. Я построил словарь фразы, который состоит из фраз вызова системы длины 4. И теперь для извлечения функции мне нужно сравнить фразы с новыми трассами системного вызова (следующие примеры):извлечение фраз из текстового файла в java

sys_clock_gettime sys_poll sys_poll sys_clock_gettime sys_poll sys_poll sys_poll sys_clock_gettime sys_poll sys_clock_gettime sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_socketcall .......

Что мне нужно, это, как я могу сравнить эти фразы с новыми следами. я делаю в java.

моя фраза словарь:

sys_socketcall-sys_poll-sys_clock_gettime-sys_poll

sys_clock_gettime-sys_poll-sys_poll-sys_socketcall

sys_poll-sys_socketcall-sys_poll-sys_clock_gettime

sys_poll-sys_clock_gettime-sys_clock_gettime -sys_clock_gettime

sys_clock_gettime-sys_clock_ge TTIME-sys_socketcall-sys_clock_gettime

sys_socketcall-sys_clock_gettime-sys_poll-sys_poll

sys_poll-sys_poll

я использую '-' в качестве разделителя в сравнении эти фразы с новыми следами, поэтому я присоединился к уникальной системе звонки с '-'.

+1

Покажите нам, что вы пробовали до сих пор. Если вы застрянете, мы постараемся помочь. – icza

+0

Вопрос не показывает никаких усилий. -1 – zubergu

+0

Не могли бы вы уточнить, что именно это указывает критерий длины? Все строки вашего примера имеют длину> 4, так что это означает, что все строки выбраны правильно? – MrHug

ответ

1

Кажется, что ваши искомые слова делятся на пробел. В этом случае просто прочитайте файл по строкам, а затем получите свои слова, используя String.split(" "). Вот один я мог думать:

public class FileSplitter { 

    public static void main(String[] args) throws IOException { 
     File file = new File("input_file.txt"); 
     LinkedList<String> words = new LinkedList<String>(); 
     int i = 0; 

     Files.lines(file.toPath()). 
     forEachOrdered(line -> words. 
       addAll(Arrays.asList(line.split(" ")))); 

     for(String word:words){ 
      if(word.trim().length() > 0){ 
       System.out.print(word.trim() + " "); 
       if(i++ >= 3){ 
        System.out.println(); 
        i = 0; 
       } 
      } 
     } 
    } 
} 

Для примера он возвращает это:

sys_clock_gettime sys_poll sys_poll sys_clock_gettime 
sys_poll sys_poll sys_poll sys_clock_gettime 
sys_poll sys_clock_gettime sys_poll sys_poll 
sys_poll sys_poll sys_poll sys_poll 
sys_poll sys_poll sys_socketcall 
+0

Это пример использования Java 8. 'line 'здесь отдельная строка из файла как' String'. –

+0

Я не совсем понял, что вам нужно, но я уверен, что вы можете попробовать его с помощью 'String.split()' для извлечения необходимых элементов из файла, а затем подсчета количества чего угодно - символов, слов или чего-либо еще. Удачи –

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