1 package org
.asamk
.signal
.manager
.util
;
3 import org
.whispersystems
.signalservice
.internal
.util
.Util
;
5 import java
.io
.ByteArrayOutputStream
;
7 import java
.io
.FileOutputStream
;
8 import java
.io
.IOException
;
9 import java
.io
.InputStream
;
10 import java
.io
.OutputStream
;
11 import java
.nio
.file
.Files
;
12 import java
.nio
.file
.Path
;
13 import java
.nio
.file
.attribute
.PosixFilePermission
;
14 import java
.nio
.file
.attribute
.PosixFilePermissions
;
15 import java
.util
.EnumSet
;
18 import static java
.nio
.file
.attribute
.PosixFilePermission
.OWNER_EXECUTE
;
19 import static java
.nio
.file
.attribute
.PosixFilePermission
.OWNER_READ
;
20 import static java
.nio
.file
.attribute
.PosixFilePermission
.OWNER_WRITE
;
22 public class IOUtils
{
24 public static File
createTempFile() throws IOException
{
25 final File tempFile
= File
.createTempFile("signal-cli_tmp_", ".tmp");
26 tempFile
.deleteOnExit();
30 public static byte[] readFully(InputStream
in) throws IOException
{
31 ByteArrayOutputStream baos
= new ByteArrayOutputStream();
33 return baos
.toByteArray();
36 public static void createPrivateDirectories(File file
) throws IOException
{
41 final Path path
= file
.toPath();
43 Set
<PosixFilePermission
> perms
= EnumSet
.of(OWNER_READ
, OWNER_WRITE
, OWNER_EXECUTE
);
44 Files
.createDirectories(path
, PosixFilePermissions
.asFileAttribute(perms
));
45 } catch (UnsupportedOperationException e
) {
46 Files
.createDirectories(path
);
50 public static void createPrivateFile(File path
) throws IOException
{
51 final Path file
= path
.toPath();
53 Set
<PosixFilePermission
> perms
= EnumSet
.of(OWNER_READ
, OWNER_WRITE
);
54 Files
.createFile(file
, PosixFilePermissions
.asFileAttribute(perms
));
55 } catch (UnsupportedOperationException e
) {
56 Files
.createFile(file
);
60 public static void copyStreamToFile(InputStream input
, File outputFile
) throws IOException
{
61 copyStreamToFile(input
, outputFile
, 8192);
64 public static void copyStreamToFile(InputStream input
, File outputFile
, int bufferSize
) throws IOException
{
65 try (OutputStream output
= new FileOutputStream(outputFile
)) {
66 byte[] buffer
= new byte[bufferSize
];
69 while ((read
= input
.read(buffer
)) != -1) {
70 output
.write(buffer
, 0, read
);