������ �� ������!
���������� ����� ZipEntry ����� ����� ����� ��������� � �� �� �� �������
�� � �������� ������ �� ��� ������� �������� � �������� �� ������.
���� ����� ����, �� ������� ���������� ��, �� ������ � zip ������ ��
���� � �������� ������� �� ������� �����������... ���������� WinZip-� ��
������� ������� ��� ���������� �� �����. ��������� �� ���� � ���� � ��
�, �� ��� ���������� ��������� ������� ���� �� ����� ����� ����
�������������� � �������. ������ ��� ������ �� ������� �� ��������: Java
"�������" �� ���� � long ��������. ������� � zip stream-a �� �������
���� int �������� � ������ ������������� �� ����� ��������� � ��� �� ��
�� ������ ����������� ��� �������� � ����������� ������ ZipEntry ������
�� ���� � stream. ���� ������ �� �� �����, �� � ����� ������ -
javaToDosTime() � dosToJavaTime() ������ long ���������. ���� �, �����
��� �� �� ����������� � ������� ������ �� �����, �� ���� �� long �����,
����� ��� �������� �� int ���� �� ������� ����������. � ����� ���� ����
����������� ���� � int ����� �������� � long ��������.
�� ����� ����� ����� �� ��������, �� ZipEntry ����� �� �������� �������
���������. ���� ���� ������� ������ ������ � ������������ header ��
����� ���� �� zip ������. ������ �������� ���������� �����, ����� �
��������� �� ZipEntry ��� ������ ������ "��������" �� ���� �����
���������� �� ��������� � ������. ���� ���� ������ �� ������� output
stream, ���� ���� �� ������� ZipEntry ������ � ���� stream � ���-������
�� ������� � ����� �� ����� ����� ��������. ���� � ������ � �����
���������� ������ �� ��������� �� zip ����. ������ ����� �� ����������,
�� ��� ����������� �� ZipEntry ����������� ��� �� ������ �������
��������� ��� ���. ������ ���� �� ������ �� �������, �� �������������
���������, ����� ������ ������ ������������ � ������ ��, ����� �����
����� ��-���� ������� � �������� ������. �.� ������������� ��
�����������, ����� ������ � ������� �� ����� �� ������ �� ���������
������ � ����� ������, ����� ������ � ��������.
���� �� ��������. ���� �� ������ � ����� �������� � �������� �� � ������
��������, �� � ���� ��� ��� ������, ����� �� ���������, �� ����������
��������� �������� � ���� �� ����������.
������� 1
������ ����� System.out() ������ ������� � ��������� ���� �������� ����
� ���� ���������� � ���� � ������ �������������� date ����������. � ���
������ ������� � �� ������ �������� ��-���� ������, ����� ������� ������
�� �� �������.
������� 2
����: Date date = new Date(2001, 8, 13, 13, 29, 7);
� deprecated �����������, ����� ����� ��������� �� ������ �������� �
���������� � deprecated. ������� ���� ��� � ������ ���� Calendar.
�������� ������ ���� �� ������ � ���� ����� ����������� ���� ���
������������ ����������� ������ � ��� ����� �� �� ��������� �����������
�������.
��������� � ��������� �:
Original time: Thu Sep 13 13:29:07 EEST 2001
Converted time: Thu Sep 13 13:29:06 EEST 2001
�, ���� �� �����, ������ ��� �� ��������� ������� �� ������� �� ����� :-)
�������� �� ������ java �����!
>��� ������� �� ������� ������� � ���� �� "��������"
>java.util.zip.ZipEntry. ��� ��� ��� privete ������ javaToDosTime() �
>dosToJavaTime(), ����� ���� �� �������.
>
>� ���������� ������ ����� �������� ���� ��������� �� Date � ������� �������
>(���� ����� ������ ���� �� ������� �� �����). ����� ����������� ������ �� DOS
>����� � ����� ������� �� Java-������. ������� �� ������� �:
>
>Original time: Fri Sep 13 13:29:07 GMT+03:00 3901
>Converted time: Fri Sep 13 13:29:07 GMT+03:00 3901
>
>����� �� �����, ������ �� ������� ������ ������ � ��������� �� �������
>�����������. ���� �� ������� �� �������, �� � �������� �� ����� zip ������� ��
>���� � ������� �� 2 �������, ����� ����������� �� ��������� �� ����������� ��
>���������� �� ������� �� ������. ���� ����� �������� �������, �� ��������� ��
>����� zip-�����, ����� ������, ���� ������������ ����� �������. :-)
>
>� ����� ����, ��������� �� � � Java, � � ����� zip-������. � ������������
>java.util.zip ������ � ���������� � ����... �����, ����������! Sun �� �������!
>;-D
>
>
>��������,
>������.
>
import java.util.*;
public class ZipTest {
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();
calendar.set(2001, 8, 13, 13, 29, 7);
Date date = calendar.getTime();
// Date date = new Date(2001, 8, 13, 13, 29, 7);
System.out.println("Original time: " + date.toString());
long enc = date.getTime();
enc = javaToDosTime(enc);
enc = dosToJavaTime(enc);
Date date2 = new Date(enc);
// System.out.println("Converted time: " + date.toString());
System.out.println("Converted time: " + date2.toString());
}
/*
* Converts DOS time to Java time (number of milliseconds since epoch).
*/
private static long dosToJavaTime(long dtime) {
Date d = new Date((int)(((dtime >> 25) & 0x7f) + 80),
(int)(((dtime >> 21) & 0x0f) - 1),
(int)((dtime >> 16) & 0x1f),
(int)((dtime >> 11) & 0x1f),
(int)((dtime >> 5) & 0x3f),
(int)((dtime << 1) & 0x3e));
return d.getTime();
}
/*
* Converts Java time to DOS time.
*/
private static long javaToDosTime(long time) {
Date d = new Date(time);
int year = d.getYear() + 1900;
if (year < 1980) {
return (1 << 21) | (1 << 16);
}
return (year - 1980) << 25 | (d.getMonth() + 1) << 21 |
d.getDate() << 16 | d.getHours() << 11 | d.getMinutes() << 5 |
d.getSeconds() >> 1;
}
} // ZipTest