Java Чтение файла и сопоставление с текущим временем

У меня есть этот тег

<META HTTP-EQUIV="Expires" CONTENT="Thu, 23 Aug 2012 09:30:00 GMT">

в файле. Я должен найти этот тег в файле и извлечь часть содержимого из него и сопоставить с текущей датой и временем. Если дата и время в файле старше, чем текущее время, установите флажок. Может ли кто-нибудь помочь мне сделать это, я новичок в этом? Спасибо

2 ответа

Решение

Это может помочь вам начать:

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class FindStringInFileTest {

    public static void main(String[] args) {

        File f = new File("c:/test.txt");
        String res = find(f);

        if (res != null) {
            System.out.println("Found Meta Http-Equiv tag");
            System.out.println(res);//print META HTTP-EQUIV line
            //check the line for whatver dates etc here
        } else {
            System.out.println("Couldnt find Meta Http-Equiv tag");
        }

    }

    public static String find(File f) {
        String result = "";
        Scanner in = null;
        try {
            in = new Scanner(new FileReader(f));
            while (in.hasNextLine()) {
                String tmp = in.nextLine();
                if (containsMetaHttpEquiv(tmp)) {
                    result = tmp;//assign line which has META HTTP-EQUIV tag
                    break;//so we dont check more
                } else {
                    result = null;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    public static boolean containsMetaHttpEquiv(String str) {
        if (str.contains("<META HTTP-EQUIV=\"Expires\" CONTENT=")) {
            return true;
        }
        return false;
    }
}

Это прочитает в текстовом файле и проверит META HTTP-EQUIV тег или либо вернуть строку / строку, которая содержит тег или null если нет META HTTP-EQUIV тег может быть найден. Затем вы извлекли бы дату, используя substring() а также indexOf() методы, а затем проанализировать это SimpleDateFormat а затем сравнить 2 даты и записать соответствующий флаг в файл.

РЕДАКТИРОВАТЬ:

Вот метод, необходимый для извлечения содержимого из тега HTTP-EQUIV META:

public static String getContentOfMetaTag(String tag) {
    String search = "CONTENT=";
    return tag.substring(tag.indexOf("CONTENT=") + search.length() + 1, tag.indexOf('>') - 1);
}

Вы бы назвали этот метод с String вернулся из find(new File) (убедитесь, что он не равен нулю перед вызовом getContentOfMetaTag(String tag))

  1. Файл содержимого выглядит как файл HTML. Поэтому используйте библиотеку, такую ​​как JSoup, чтобы получить значение атрибута CONTENT тега META.
  2. Тогда используйте SimpleDateFormat преобразовать строку в Calendar/Date объект.
  3. Тогда используйте after() /before() API для сравнения.
Другие вопросы по тегам