NIHVIVO-160 FileStorage.getInputStream returns an InputStream, instead of an array of bytes. Read it however you like.
This commit is contained in:
parent
b86ec9e7b2
commit
f40e2d1af7
3 changed files with 19 additions and 35 deletions
|
@ -50,13 +50,15 @@ public interface FileStorage {
|
||||||
String getFilename(String id) throws IOException;
|
String getFilename(String id) throws IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the contents of the file with this ID and this filename.
|
* Get a stream that will provide the contents of the file that was stored
|
||||||
|
* with this ID and this filename. Close the stream when you're finished
|
||||||
|
* with it.
|
||||||
*
|
*
|
||||||
* @throws FileNotFoundException
|
* @throws FileNotFoundException
|
||||||
* if there is no file that matches this ID and filename.
|
* if there is no file that matches this ID and filename.
|
||||||
*/
|
*/
|
||||||
byte[] getFile(String id, String filename) throws FileNotFoundException,
|
InputStream getInputStream(String id, String filename)
|
||||||
IOException;
|
throws FileNotFoundException, IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If a file exists with this ID, it will be deleted, regardless of the file
|
* If a file exists with this ID, it will be deleted, regardless of the file
|
||||||
|
|
|
@ -4,7 +4,6 @@ package edu.cornell.mannlib.vitro.webapp.utils.filestorage;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
@ -64,7 +63,8 @@ public class FileStorageImpl implements FileStorage {
|
||||||
* if the configuration property doesn't point to an existing,
|
* if the configuration property doesn't point to an existing,
|
||||||
* writeable directory.
|
* writeable directory.
|
||||||
*/
|
*/
|
||||||
FileStorageImpl(File baseDir, Collection<String> namespaces) throws IOException {
|
FileStorageImpl(File baseDir, Collection<String> namespaces)
|
||||||
|
throws IOException {
|
||||||
checkBaseDirValid(baseDir);
|
checkBaseDirValid(baseDir);
|
||||||
checkNamespacesValid(namespaces);
|
checkNamespacesValid(namespaces);
|
||||||
|
|
||||||
|
@ -347,12 +347,10 @@ public class FileStorageImpl implements FileStorage {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
|
||||||
* @throws IOException
|
|
||||||
* if the file is larger than the maximum allowable size.
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public byte[] getFile(String id, String filename) throws IOException {
|
public InputStream getInputStream(String id, String filename)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
File file = FileStorageHelper.getFullPath(this.rootDir, id, filename,
|
File file = FileStorageHelper.getFullPath(this.rootDir, id, filename,
|
||||||
this.namespacesMap);
|
this.namespacesMap);
|
||||||
|
@ -362,25 +360,6 @@ public class FileStorageImpl implements FileStorage {
|
||||||
+ "', file location '" + file + "'");
|
+ "', file location '" + file + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
InputStream in = null;
|
return new FileInputStream(file);
|
||||||
try {
|
|
||||||
in = new BufferedInputStream(new FileInputStream(file));
|
|
||||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
|
||||||
byte[] buffer = new byte[4096];
|
|
||||||
int howMany;
|
|
||||||
while (-1 != (howMany = in.read(buffer))) {
|
|
||||||
bytes.write(buffer, 0, howMany);
|
|
||||||
}
|
|
||||||
bytes.close();
|
|
||||||
return bytes.toByteArray();
|
|
||||||
} finally {
|
|
||||||
if (in != null) {
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import static edu.cornell.mannlib.vitro.webapp.utils.filestorage.FileStorageFact
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -148,10 +149,11 @@ public class FileStorageFactoryTest extends AbstractTestClass {
|
||||||
return "filename";
|
return "filename";
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getFile(String id, String filename)
|
public InputStream getInputStream(String id, String filename)
|
||||||
throws FileNotFoundException, IOException {
|
throws FileNotFoundException, IOException {
|
||||||
return new byte[0];
|
return new ByteArrayInputStream(new byte[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This class has no zero-argument constructor. */
|
/** This class has no zero-argument constructor. */
|
||||||
|
@ -172,10 +174,11 @@ public class FileStorageFactoryTest extends AbstractTestClass {
|
||||||
return "filename";
|
return "filename";
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getFile(String id, String filename)
|
public InputStream getInputStream(String id, String filename)
|
||||||
throws FileNotFoundException, IOException {
|
throws FileNotFoundException, IOException {
|
||||||
return new byte[0];
|
return new ByteArrayInputStream(new byte[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This class does not implement the FileStorage interface. */
|
/** This class does not implement the FileStorage interface. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue