������ �� ������!

���������� ����� 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

Reply via email to