- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
File tarFile = new File(UUID.randomUUID() + ".tar");
tarFile.createNewFile();
FileOutputStream tarFileOutputStream = new FileOutputStream(tarFile.getAbsolutePath());
TarArchiveOutputStream archiveOutputStream = new TarArchiveOutputStream(tarFileOutputStream);
String entryName = "пример.txt";
File fileToPack = new File("C:\\пример.txt");
InputStream in = new FileInputStream(fileToPack);
//создаем запись в архиве с русским названием
TarArchiveEntry entry = new TarArchiveEntry(entryName);
entry.setSize(in.available());
archiveOutputStream.putArchiveEntry(entry);
while (in.available() > 10 * 1024 * 1024) {
byte b[] = new byte[10 * 1024 * 1024];
in.read(b);
archiveOutputStream.write(b, 0, b.length);
}
byte b[] = new byte[in.available()];
in.read(b);
archiveOutputStream.write(b, 0, b.length);
in.close();
archiveOutputStream.flush();
archiveOutputStream.closeArchiveEntry();
archiveOutputStream.flush();
archiveOutputStream.close();
volatile 16.06.2011 20:42 # −1
Lennis 16.06.2011 21:22 # 0
Lure Of Chaos 16.06.2011 21:29 # +1
А в том, что нужно смотреть не на in.available(), а снимать показатели с in.read(b) - потому как написано в доке
http://download.oracle.com/javase/1.4.2/docs/api/java/io/InputStream.html#read%28byte[]%29
что возвращается кол-во прочитанных байт, или -1 по достижению конца.
istem 17.06.2011 00:48 # +1
Lure Of Chaos 17.06.2011 10:16 # 0
absolut 17.06.2011 10:18 # 0
guest 18.06.2011 02:48 # 0
Завтра пойду на работу, напишу пару страниц ГК.
Ждите совершенно новый говнокод в новом сезоне.
absolut 18.06.2011 09:35 # 0
По субботам не работаю
istem 17.06.2011 23:01 # 0
bugmenot 17.06.2011 23:09 # 0
kinda ghey
istem 17.06.2011 23:30 # +1
bugmenot 18.06.2011 11:20 # 0
guest 17.06.2011 11:37 # 0
Lure Of Chaos 17.06.2011 11:38 # 0
absolut 17.06.2011 11:45 # +1
Lure Of Chaos 17.06.2011 11:48 # 0
guest 18.06.2011 02:46 # +2
3.14159265 17.06.2011 14:42 # 0
> archiveOutputStream.flush();
archiveOutputStream.closeArchiveEntry();
> archiveOutputStream.flush();
Lure Of Chaos 17.06.2011 15:04 # 0
gegMOPO4 17.06.2011 15:44 # +7