]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/IOUtils.java
434669de975fa0d463e9ac69a261dced80742e47
[signal-cli] / src / main / java / org / asamk / signal / util / IOUtils.java
1 package org.asamk.signal.util;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.StringWriter;
7 import java.nio.charset.Charset;
8 import java.nio.file.Files;
9 import java.nio.file.Path;
10 import java.nio.file.attribute.PosixFilePermission;
11 import java.nio.file.attribute.PosixFilePermissions;
12 import java.util.EnumSet;
13 import java.util.Set;
14
15 import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
16 import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
17 import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;
18
19 public class IOUtils {
20
21 private IOUtils() {
22 }
23
24 public static File createTempFile() throws IOException {
25 return File.createTempFile("signal_tmp_", ".tmp");
26 }
27
28 public static String readAll(InputStream in, Charset charset) throws IOException {
29 StringWriter output = new StringWriter();
30 byte[] buffer = new byte[4096];
31 int n;
32 while (-1 != (n = in.read(buffer))) {
33 output.write(new String(buffer, 0, n, charset));
34 }
35 return output.toString();
36 }
37
38 public static void createPrivateDirectories(String directoryPath) throws IOException {
39 final File file = new File(directoryPath);
40 if (file.exists()) {
41 return;
42 }
43
44 final Path path = file.toPath();
45 try {
46 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE);
47 Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms));
48 } catch (UnsupportedOperationException e) {
49 Files.createDirectories(path);
50 }
51 }
52
53 public static void createPrivateFile(String path) throws IOException {
54 final Path file = new File(path).toPath();
55 try {
56 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE);
57 Files.createFile(file, PosixFilePermissions.asFileAttribute(perms));
58 } catch (UnsupportedOperationException e) {
59 Files.createFile(file);
60 }
61 }
62
63 public static String getDataHomeDir() {
64 String dataHome = System.getenv("XDG_DATA_HOME");
65 if (dataHome != null) {
66 return dataHome;
67 }
68
69 return System.getProperty("user.home") + "/.local/share";
70 }
71 }