К сожалению, нет «предыдущего» селектора, но вы можете , возможно, получить тот же эффект, используя позиционирование (например, float right). Это зависит от того, что вы пытаетесь сделать.
В моем случае я хотел получить первую 5-звездочную рейтинговую систему CSS. Мне нужно было бы покрасить (или поменять значок) предыдущих звезд. Если плавать каждый элемент вправо, я по сути получаю тот же эффект (html для звезд, таким образом, должен быть записан «назад»).
Я использую FontAwesome в этом примере и заменяю между юникодами fa -star-o и fa-star http://fortawesome.github.io/Font-Awesome/
CSS:
.fa {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* set all stars to 'empty star' */
.stars-container {
display: inline-block;
}
/* set all stars to 'empty star' */
.stars-container .star {
float: right;
display: inline-block;
padding: 2px;
color: orange;
cursor: pointer;
}
.stars-container .star:before {
content: "\f006"; /* fontAwesome empty star code */
}
/* set hovered star to 'filled star' */
.star:hover:before{
content: "\f005"; /* fontAwesome filled star code */
}
/* set all stars after hovered to'filled star'
** it will appear that it selects all after due to positioning */
.star:hover ~ .star:before {
content: "\f005"; /* fontAwesome filled star code */
}
HTML: (40)
Магические байты для формата ZIP составляют 50 4B
. Вы можете протестировать поток (используя mark и reset - вам может потребоваться буфер ), но я не ожидал бы, что это будет 100% надежный подход. Невозможно отличить его от текстового файла в кодировке US-ASCII, который начинается с букв PK
.
Лучший способ - предоставить метаданные о формате содержимого. перед открытием потока, а затем обработайте его соответствующим образом.
И начиная с .zip и начиная с .xlsx наличие того же Магического числа, я не мог найти действительный zip-файл (если переименовано).
Так, я использовал Apache Tika для нахождения точного типа документа.
, Даже если переименованный в тип файла как zip, это находит точный тип.
Вы можете проверить, что первые четыре байта потока - это подпись заголовка локального файла , которая запускает заголовок локального файла , который обрабатывает каждый файл в ZIP-файл , как показано в спецификации здесь , должен быть 50 4B 03 04
.
Небольшой тестовый код показывает, как это работает:
byte[] buffer = new byte[4];
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("so.zip"));
ZipEntry ze = new ZipEntry("HelloWorld.txt");
zos.putNextEntry(ze);
zos.write("Hello world".getBytes());
zos.close();
FileInputStream is = new FileInputStream("so.zip");
is.read(buffer);
is.close();
}
catch(IOException e) {
e.printStackTrace();
}
for (byte b : buffer) {
System.out.printf("%H ",b);
}
Получил этот вывод:
50 4B 3 4
Не очень элегантно, но надежно:
Если поток можно прочитать через ZipInputStream
, его следует заархивировать.