1 package org
.asamk
.signal
.util
;
3 import org
.whispersystems
.signalservice
.internal
.util
.Util
;
5 import java
.io
.ByteArrayOutputStream
;
7 import java
.io
.IOException
;
8 import java
.io
.InputStream
;
9 import java
.io
.StringWriter
;
10 import java
.nio
.charset
.Charset
;
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
{
27 public static File
createTempFile() throws IOException
{
28 return File
.createTempFile("signal_tmp_", ".tmp");
31 public static String
readAll(InputStream
in, Charset charset
) throws IOException
{
32 StringWriter output
= new StringWriter();
33 byte[] buffer
= new byte[4096];
35 while (-1 != (n
= in.read(buffer
))) {
36 output
.write(new String(buffer
, 0, n
, charset
));
38 return output
.toString();
41 public static byte[] readFully(InputStream
in) throws IOException
{
42 ByteArrayOutputStream baos
= new ByteArrayOutputStream();
44 return baos
.toByteArray();
47 public static void createPrivateDirectories(String directoryPath
) throws IOException
{
48 final File file
= new File(directoryPath
);
53 final Path path
= file
.toPath();
55 Set
<PosixFilePermission
> perms
= EnumSet
.of(OWNER_READ
, OWNER_WRITE
, OWNER_EXECUTE
);
56 Files
.createDirectories(path
, PosixFilePermissions
.asFileAttribute(perms
));
57 } catch (UnsupportedOperationException e
) {
58 Files
.createDirectories(path
);
62 public static void createPrivateFile(String path
) throws IOException
{
63 final Path file
= new File(path
).toPath();
65 Set
<PosixFilePermission
> perms
= EnumSet
.of(OWNER_READ
, OWNER_WRITE
);
66 Files
.createFile(file
, PosixFilePermissions
.asFileAttribute(perms
));
67 } catch (UnsupportedOperationException e
) {
68 Files
.createFile(file
);
72 public static String
getDataHomeDir() {
73 String dataHome
= System
.getenv("XDG_DATA_HOME");
74 if (dataHome
!= null) {
78 return System
.getProperty("user.home") + "/.local/share";