/*
* Copyright (C) 2014 Haruki Hasegawa
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.h6ah4i.android.media.openslmediaplayer.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import com.h6ah4i.android.media.IReleasable;
public class CommonTestCaseUtils {
private CommonTestCaseUtils() {
}
/*
* NOTE: The AssetFileDescriptor does not implement
* Closeable interface until API level 19 (issue #8)
*/
public static void closeQuietly(AssetFileDescriptor afd) {
if (afd == null)
return;
try {
afd.close();
} catch (Exception e) {
}
}
public static void closeQuietly(InputStream is) {
if (is == null)
return;
try {
is.close();
} catch (Exception e) {
}
}
public static void closeQuietly(OutputStream os) {
if (os == null)
return;
try {
os.close();
} catch (Exception e) {
}
}
public static void closeQuietly(FileChannel is) {
if (is == null)
return;
try {
is.close();
} catch (Exception e) {
}
}
public static void releaseQuietly(IReleasable releasable) {
if (releasable == null)
return;
try {
releasable.release();
} catch (Exception e) {
}
}
public static void copyAssetFile(AssetManager am, String assetName, File destBaseDir,
boolean overwrite)
throws IOException {
File destFile = new File(
destBaseDir
.getAbsolutePath()
.concat(File.separator)
.concat(assetName));
if (destFile.exists() && !overwrite)
return;
if (overwrite) {
destFile.delete();
}
destFile.getParentFile().mkdirs();
InputStream is = null;
OutputStream os = null;
try {
byte[] buff = new byte[4096];
is = am.open(assetName, AssetManager.ACCESS_STREAMING);
os = new FileOutputStream(destFile);
while (true) {
int nread = is.read(buff);
if (nread <= 0)
break;
os.write(buff, 0, nread);
}
} finally {
closeQuietly(is);
closeQuietly(os);
}
}
public static void copyFile(File sourceFile, File destFile) throws IOException {
if (!destFile.exists()) {
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
try {
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
} finally {
closeQuietly(source);
closeQuietly(destination);
}
}
public static void removeDirectory(File dir) {
if (dir.isDirectory()) {
final File[] files = dir.listFiles();
if (files != null) {
for (final File file : files) {
removeDirectory(file);
}
}
dir.delete();
} else {
dir.delete();
}
}
}