FileSystem and Screen lib realization [try 2]
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>arcadexsystem</artifactId>
|
||||
|
||||
145
filesystem/src/main/java/FileSystemLib.java
Normal file
145
filesystem/src/main/java/FileSystemLib.java
Normal file
@@ -0,0 +1,145 @@
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
/**
|
||||
* File System proxy lib
|
||||
* <p>
|
||||
* Created by daniil on 02.04.16.
|
||||
*/
|
||||
public class FileSystemLib {
|
||||
/**
|
||||
* Copy data from InputStream to OutputStream
|
||||
*
|
||||
* @param from Input Stream
|
||||
* @param to Output Stream
|
||||
* @return size of copied data
|
||||
* @throws IOException
|
||||
*/
|
||||
protected static long copy(InputStream from, OutputStream to) throws IOException {
|
||||
assert from != null;
|
||||
assert to != null;
|
||||
byte[] buf = new byte[4096];
|
||||
long total = 0L;
|
||||
|
||||
while (true) {
|
||||
int r = from.read(buf);
|
||||
if (r == -1) {
|
||||
return total;
|
||||
}
|
||||
|
||||
to.write(buf, 0, r);
|
||||
total += (long) r;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy file or directory from one direction to another
|
||||
*
|
||||
* @param from File to copy
|
||||
* @param to Destination
|
||||
* @param replace replace the destination file if present?
|
||||
* @throws IOException
|
||||
*/
|
||||
public void copy(Path from, Path to, boolean replace) throws IOException {
|
||||
assert from != null;
|
||||
assert to != null;
|
||||
|
||||
if (!replace)
|
||||
Files.copy(from, to);
|
||||
else
|
||||
Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete file
|
||||
*
|
||||
* @param file file to delete
|
||||
* @throws IOException, FileNotFoundException
|
||||
*/
|
||||
public void delete(File file) throws IOException {
|
||||
assert file != null;
|
||||
|
||||
if (!file.exists())
|
||||
throw new FileNotFoundException("Unable to delete nonexistent file");
|
||||
if (!file.delete())
|
||||
throw new IOException("Unable to delete this file");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a symlink
|
||||
*
|
||||
* @param linkFile Where symlink should be created
|
||||
* @param actualFile Where should it point to
|
||||
* @throws IOException
|
||||
*/
|
||||
public void createSymlink(Path linkFile, Path actualFile) throws IOException {
|
||||
assert linkFile != null;
|
||||
assert actualFile != null;
|
||||
|
||||
if (!actualFile.toFile().exists())
|
||||
throw new FileNotFoundException("Couldn't find symlink destination");
|
||||
|
||||
Files.createSymbolicLink(linkFile, actualFile);
|
||||
}
|
||||
|
||||
public void restoreFromResources(String resourceName, File destination, boolean replace) throws IOException {
|
||||
assert resourceName != null;
|
||||
assert destination != null;
|
||||
|
||||
if (destination.exists() && !replace)
|
||||
return;
|
||||
try {
|
||||
if (!destination.createNewFile())
|
||||
throw new IOException("Unable to create new file");
|
||||
|
||||
try (InputStream is = this.getClass().getClassLoader().getResourceAsStream(resourceName);
|
||||
OutputStream os = new FileOutputStream(destination)) {
|
||||
copy(is, os);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new IOException("Unable to restore file from resource");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FileReader for the file
|
||||
* <p>
|
||||
* We need this to make the code testable
|
||||
*
|
||||
* @param file file to read
|
||||
* @return FileReader
|
||||
* @throws FileNotFoundException
|
||||
*/
|
||||
public Reader getReader(File file) throws FileNotFoundException {
|
||||
assert file != null;
|
||||
|
||||
return new FileReader(file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FileWriter for the file
|
||||
* <p>
|
||||
* We need this to make the code testable
|
||||
*
|
||||
* @param file file to write to
|
||||
* @return FileWriter
|
||||
* @throws IOException
|
||||
*/
|
||||
public Writer getWriter(File file) throws IOException {
|
||||
return new FileWriter(file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unzip archive to directory
|
||||
*
|
||||
* @param archive archive to extract
|
||||
* @param directory destination
|
||||
* @throws IOException
|
||||
*/
|
||||
public void unzip(String archive, String directory) throws IOException {
|
||||
UnzipUtility zip = new UnzipUtility();
|
||||
zip.unzip(archive, directory);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user