Java 类org.apache.cordova.file.NoModificationAllowedException 实例源码
项目:keemob
文件:FileWriter.java
public static int writeToUri(Context context, Filesystem filesystem, LocalFilesystemURL inputURL, String data, int offset, boolean isBinary) throws NoModificationAllowedException {
Uri uri = filesystem.toNativeUri(inputURL);
OutputStream outputStream = null;
try {
outputStream = context.getContentResolver().openOutputStream(uri);
byte[] rawData;
if (isBinary) {
rawData = Base64.decode(data, Base64.DEFAULT);
} else {
rawData = data.getBytes(Charset.defaultCharset());
}
outputStream.write(rawData);
outputStream.flush();
outputStream.close();
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
context.sendBroadcast(intent);
return rawData.length;
} catch (Exception e) {
NoModificationAllowedException exception = new NoModificationAllowedException("Couldn't write to file given its content URI");
exception.initCause(e);
throw exception;
}
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject copyDirectory(File paramFile1, File paramFile2)
throws JSONException, IOException, NoModificationAllowedException, InvalidModificationException
{
if ((paramFile2.exists()) && (paramFile2.isFile()))
throw new InvalidModificationException("Can't rename a file to a directory");
if (isCopyOnItself(paramFile1.getAbsolutePath(), paramFile2.getAbsolutePath()))
throw new InvalidModificationException("Can't copy itself into itself");
if ((!paramFile2.exists()) && (!paramFile2.mkdir()))
throw new NoModificationAllowedException("Couldn't create the destination directory");
File[] arrayOfFile = paramFile1.listFiles();
int i = arrayOfFile.length;
int j = 0;
if (j < i)
{
File localFile = arrayOfFile[j];
if (localFile.isDirectory())
copyDirectory(localFile, paramFile2);
while (true)
{
j++;
break;
copyFile(localFile, new File(paramFile2.getAbsoluteFile() + File.separator + localFile.getName()));
}
}
return getEntry(paramFile2);
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject moveDirectory(File paramFile1, File paramFile2)
throws IOException, JSONException, InvalidModificationException, NoModificationAllowedException, FileExistsException
{
if ((paramFile2.exists()) && (paramFile2.isFile()))
throw new InvalidModificationException("Can't rename a file to a directory");
if (isCopyOnItself(paramFile1.getAbsolutePath(), paramFile2.getAbsolutePath()))
throw new InvalidModificationException("Can't move itself into itself");
if ((paramFile2.exists()) && (paramFile2.list().length > 0))
throw new InvalidModificationException("directory is not empty");
if (!paramFile1.renameTo(paramFile2))
{
copyDirectory(paramFile1, paramFile2);
if (paramFile2.exists())
removeDirRecursively(paramFile1);
}
else
{
return getEntry(paramFile2);
}
throw new IOException("moved failed");
}
项目:12306-android-Decompile
文件:FileUtils.java
private long truncateFile(String paramString, long paramLong)
throws FileNotFoundException, IOException, NoModificationAllowedException
{
if (paramString.startsWith("content://"))
throw new NoModificationAllowedException("Couldn't truncate file given its content URI");
RandomAccessFile localRandomAccessFile = new RandomAccessFile(FileHelper.getRealPath(paramString, this.cordova), "rw");
try
{
if (localRandomAccessFile.length() >= paramLong)
localRandomAccessFile.getChannel().truncate(paramLong);
while (true)
{
return paramLong;
long l = localRandomAccessFile.length();
paramLong = l;
}
}
finally
{
localRandomAccessFile.close();
}
throw localObject;
}
项目:12306-android-Decompile
文件:FileUtils.java
public long write(String paramString1, String paramString2, int paramInt)
throws FileNotFoundException, IOException, NoModificationAllowedException
{
if (paramString1.startsWith("content://"))
throw new NoModificationAllowedException("Couldn't write to file given its content URI");
String str = FileHelper.getRealPath(paramString1, this.cordova);
boolean bool = false;
if (paramInt > 0)
{
truncateFile(str, paramInt);
bool = true;
}
byte[] arrayOfByte1 = paramString2.getBytes();
ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(arrayOfByte1);
FileOutputStream localFileOutputStream = new FileOutputStream(str, bool);
byte[] arrayOfByte2 = new byte[arrayOfByte1.length];
localByteArrayInputStream.read(arrayOfByte2, 0, arrayOfByte2.length);
localFileOutputStream.write(arrayOfByte2, 0, arrayOfByte1.length);
localFileOutputStream.flush();
localFileOutputStream.close();
return arrayOfByte1.length;
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* Deletes a file or directory. It is an error to attempt to delete a directory that is not empty.
* It is an error to attempt to delete the root directory of a filesystem.
*
* @param filePath file or directory to be removed
* @return a boolean representing success of failure
* @throws NoModificationAllowedException
* @throws InvalidModificationException
*/
private boolean remove(String filePath) throws NoModificationAllowedException, InvalidModificationException {
File fp = createFileObject(filePath);
// You can't delete the root directory.
if (atRootDirectory(filePath)) {
throw new NoModificationAllowedException("You can't delete the root directory");
}
// You can't delete a directory that is not empty
if (fp.isDirectory() && fp.list().length > 0) {
throw new InvalidModificationException("You can't delete a directory that is not empty.");
}
return fp.delete();
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* Truncate the file to size
*
* @param filename
* @param size
* @throws FileNotFoundException, IOException
* @throws NoModificationAllowedException
*/
private long truncateFile(String filename, long size) throws FileNotFoundException, IOException, NoModificationAllowedException {
if (filename.startsWith("content://")) {
throw new NoModificationAllowedException("Couldn't truncate file given its content URI");
}
filename = FileHelper.getRealPath(filename, cordova);
RandomAccessFile raf = new RandomAccessFile(filename, "rw");
try {
if (raf.length() >= size) {
FileChannel channel = raf.getChannel();
channel.truncate(size);
return size;
}
return raf.length();
} finally {
raf.close();
}
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject copyDirectory(File paramFile1, File paramFile2)
throws JSONException, IOException, NoModificationAllowedException, InvalidModificationException
{
if ((paramFile2.exists()) && (paramFile2.isFile()))
throw new InvalidModificationException("Can't rename a file to a directory");
if (isCopyOnItself(paramFile1.getAbsolutePath(), paramFile2.getAbsolutePath()))
throw new InvalidModificationException("Can't copy itself into itself");
if ((!paramFile2.exists()) && (!paramFile2.mkdir()))
throw new NoModificationAllowedException("Couldn't create the destination directory");
File[] arrayOfFile = paramFile1.listFiles();
int i = arrayOfFile.length;
int j = 0;
if (j < i)
{
File localFile = arrayOfFile[j];
if (localFile.isDirectory())
copyDirectory(localFile, paramFile2);
while (true)
{
j++;
break;
copyFile(localFile, new File(paramFile2.getAbsoluteFile() + File.separator + localFile.getName()));
}
}
return getEntry(paramFile2);
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject moveDirectory(File paramFile1, File paramFile2)
throws IOException, JSONException, InvalidModificationException, NoModificationAllowedException, FileExistsException
{
if ((paramFile2.exists()) && (paramFile2.isFile()))
throw new InvalidModificationException("Can't rename a file to a directory");
if (isCopyOnItself(paramFile1.getAbsolutePath(), paramFile2.getAbsolutePath()))
throw new InvalidModificationException("Can't move itself into itself");
if ((paramFile2.exists()) && (paramFile2.list().length > 0))
throw new InvalidModificationException("directory is not empty");
if (!paramFile1.renameTo(paramFile2))
{
copyDirectory(paramFile1, paramFile2);
if (paramFile2.exists())
removeDirRecursively(paramFile1);
}
else
{
return getEntry(paramFile2);
}
throw new IOException("moved failed");
}
项目:12306-android-Decompile
文件:FileUtils.java
private long truncateFile(String paramString, long paramLong)
throws FileNotFoundException, IOException, NoModificationAllowedException
{
if (paramString.startsWith("content://"))
throw new NoModificationAllowedException("Couldn't truncate file given its content URI");
RandomAccessFile localRandomAccessFile = new RandomAccessFile(FileHelper.getRealPath(paramString, this.cordova), "rw");
try
{
if (localRandomAccessFile.length() >= paramLong)
localRandomAccessFile.getChannel().truncate(paramLong);
while (true)
{
return paramLong;
long l = localRandomAccessFile.length();
paramLong = l;
}
}
finally
{
localRandomAccessFile.close();
}
throw localObject;
}
项目:12306-android-Decompile
文件:FileUtils.java
public long write(String paramString1, String paramString2, int paramInt)
throws FileNotFoundException, IOException, NoModificationAllowedException
{
if (paramString1.startsWith("content://"))
throw new NoModificationAllowedException("Couldn't write to file given its content URI");
String str = FileHelper.getRealPath(paramString1, this.cordova);
boolean bool = false;
if (paramInt > 0)
{
truncateFile(str, paramInt);
bool = true;
}
byte[] arrayOfByte1 = paramString2.getBytes();
ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(arrayOfByte1);
FileOutputStream localFileOutputStream = new FileOutputStream(str, bool);
byte[] arrayOfByte2 = new byte[arrayOfByte1.length];
localByteArrayInputStream.read(arrayOfByte2, 0, arrayOfByte2.length);
localFileOutputStream.write(arrayOfByte2, 0, arrayOfByte1.length);
localFileOutputStream.flush();
localFileOutputStream.close();
return arrayOfByte1.length;
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* Deletes a file or directory. It is an error to attempt to delete a directory that is not empty.
* It is an error to attempt to delete the root directory of a filesystem.
*
* @param filePath file or directory to be removed
* @return a boolean representing success of failure
* @throws NoModificationAllowedException
* @throws InvalidModificationException
*/
private boolean remove(String filePath) throws NoModificationAllowedException, InvalidModificationException {
File fp = createFileObject(filePath);
// You can't delete the root directory.
if (atRootDirectory(filePath)) {
throw new NoModificationAllowedException("You can't delete the root directory");
}
// You can't delete a directory that is not empty
if (fp.isDirectory() && fp.list().length > 0) {
throw new InvalidModificationException("You can't delete a directory that is not empty.");
}
return fp.delete();
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* Truncate the file to size
*
* @param filename
* @param size
* @throws FileNotFoundException, IOException
* @throws NoModificationAllowedException
*/
private long truncateFile(String filename, long size) throws FileNotFoundException, IOException, NoModificationAllowedException {
if (filename.startsWith("content://")) {
throw new NoModificationAllowedException("Couldn't truncate file given its content URI");
}
filename = FileHelper.getRealPath(filename, cordova);
RandomAccessFile raf = new RandomAccessFile(filename, "rw");
try {
if (raf.length() >= size) {
FileChannel channel = raf.getChannel();
channel.truncate(size);
return size;
}
return raf.length();
} finally {
raf.close();
}
}
项目:12306-android-Decompile
文件:FileUtils.java
private boolean remove(String paramString)
throws NoModificationAllowedException, InvalidModificationException
{
File localFile = createFileObject(paramString);
if (atRootDirectory(paramString))
throw new NoModificationAllowedException("You can't delete the root directory");
if ((localFile.isDirectory()) && (localFile.list().length > 0))
throw new InvalidModificationException("You can't delete a directory that is not empty.");
return localFile.delete();
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject transferTo(String paramString1, String paramString2, String paramString3, boolean paramBoolean)
throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException
{
String str1 = FileHelper.getRealPath(paramString1, this.cordova);
String str2 = FileHelper.getRealPath(paramString2, this.cordova);
if ((paramString3 != null) && (paramString3.contains(":")))
throw new EncodingException("Bad file name");
File localFile1 = new File(str1);
if (!localFile1.exists())
throw new FileNotFoundException("The source does not exist");
File localFile2 = new File(str2);
if (!localFile2.exists())
throw new FileNotFoundException("The source does not exist");
File localFile3 = createDestination(paramString3, localFile1, localFile2);
if (localFile1.getAbsolutePath().equals(localFile3.getAbsolutePath()))
throw new InvalidModificationException("Can't copy a file onto itself");
JSONObject localJSONObject;
if (localFile1.isDirectory())
if (paramBoolean)
localJSONObject = moveDirectory(localFile1, localFile3);
while (true)
{
return localJSONObject;
return copyDirectory(localFile1, localFile3);
if (!paramBoolean)
break;
localJSONObject = moveFile(localFile1, localFile3);
if (!paramString1.startsWith("content://"))
continue;
notifyDelete(paramString1);
return localJSONObject;
}
return copyFile(localFile1, localFile3);
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* Copy a directory
*
* @param srcDir directory to be copied
* @param destinationDir destination to be copied to
* @return a DirectoryEntry object
* @throws JSONException
* @throws IOException
* @throws NoModificationAllowedException
* @throws InvalidModificationException
*/
private JSONObject copyDirectory(File srcDir, File destinationDir) throws JSONException, IOException, NoModificationAllowedException, InvalidModificationException {
// Renaming a file to an existing directory should fail
if (destinationDir.exists() && destinationDir.isFile()) {
throw new InvalidModificationException("Can't rename a file to a directory");
}
// Check to make sure we are not copying the directory into itself
if (isCopyOnItself(srcDir.getAbsolutePath(), destinationDir.getAbsolutePath())) {
throw new InvalidModificationException("Can't copy itself into itself");
}
// See if the destination directory exists. If not create it.
if (!destinationDir.exists()) {
if (!destinationDir.mkdir()) {
// If we can't create the directory then fail
throw new NoModificationAllowedException("Couldn't create the destination directory");
}
}
for (File file : srcDir.listFiles()) {
if (file.isDirectory()) {
copyDirectory(file, destinationDir);
} else {
File destination = new File(destinationDir.getAbsoluteFile() + File.separator + file.getName());
copyFile(file, destination);
}
}
return getEntry(destinationDir);
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* Move a directory
*
* @param srcDir directory to be copied
* @param destinationDir destination to be copied to
* @return a DirectoryEntry object
* @throws JSONException
* @throws IOException
* @throws InvalidModificationException
* @throws NoModificationAllowedException
* @throws FileExistsException
*/
private JSONObject moveDirectory(File srcDir, File destinationDir) throws IOException, JSONException, InvalidModificationException, NoModificationAllowedException, FileExistsException {
// Renaming a file to an existing directory should fail
if (destinationDir.exists() && destinationDir.isFile()) {
throw new InvalidModificationException("Can't rename a file to a directory");
}
// Check to make sure we are not copying the directory into itself
if (isCopyOnItself(srcDir.getAbsolutePath(), destinationDir.getAbsolutePath())) {
throw new InvalidModificationException("Can't move itself into itself");
}
// If the destination directory already exists and is empty then delete it. This is according to spec.
if (destinationDir.exists()) {
if (destinationDir.list().length > 0) {
throw new InvalidModificationException("directory is not empty");
}
}
// Try to rename the directory
if (!srcDir.renameTo(destinationDir)) {
// Trying to rename the directory failed. Possibly because we moved across file system on the device.
// Now we have to do things the hard way
// 1) Copy all the old files
// 2) delete the src directory
copyDirectory(srcDir, destinationDir);
if (destinationDir.exists()) {
removeDirRecursively(srcDir);
} else {
throw new IOException("moved failed");
}
}
return getEntry(destinationDir);
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* Write contents of file.
*
* @param filename The name of the file.
* @param data The contents of the file.
* @param offset The position to begin writing the file.
* @param isBinary True if the file contents are base64-encoded binary data
* @throws FileNotFoundException, IOException
* @throws NoModificationAllowedException
*/
/**/
public long write(String filename, String data, int offset, boolean isBinary) throws FileNotFoundException, IOException, NoModificationAllowedException {
if (filename.startsWith("content://")) {
throw new NoModificationAllowedException("Couldn't write to file given its content URI");
}
filename = FileHelper.getRealPath(filename, cordova);
boolean append = false;
if (offset > 0) {
this.truncateFile(filename, offset);
append = true;
}
byte[] rawData;
if (isBinary) {
rawData = Base64.decode(data, Base64.DEFAULT);
} else {
rawData = data.getBytes();
}
ByteArrayInputStream in = new ByteArrayInputStream(rawData);
FileOutputStream out = new FileOutputStream(filename, append);
byte buff[] = new byte[rawData.length];
in.read(buff, 0, buff.length);
out.write(buff, 0, rawData.length);
out.flush();
out.close();
return rawData.length;
}
项目:12306-android-Decompile
文件:FileUtils.java
private boolean remove(String paramString)
throws NoModificationAllowedException, InvalidModificationException
{
File localFile = createFileObject(paramString);
if (atRootDirectory(paramString))
throw new NoModificationAllowedException("You can't delete the root directory");
if ((localFile.isDirectory()) && (localFile.list().length > 0))
throw new InvalidModificationException("You can't delete a directory that is not empty.");
return localFile.delete();
}
项目:12306-android-Decompile
文件:FileUtils.java
private JSONObject transferTo(String paramString1, String paramString2, String paramString3, boolean paramBoolean)
throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException
{
String str1 = FileHelper.getRealPath(paramString1, this.cordova);
String str2 = FileHelper.getRealPath(paramString2, this.cordova);
if ((paramString3 != null) && (paramString3.contains(":")))
throw new EncodingException("Bad file name");
File localFile1 = new File(str1);
if (!localFile1.exists())
throw new FileNotFoundException("The source does not exist");
File localFile2 = new File(str2);
if (!localFile2.exists())
throw new FileNotFoundException("The source does not exist");
File localFile3 = createDestination(paramString3, localFile1, localFile2);
if (localFile1.getAbsolutePath().equals(localFile3.getAbsolutePath()))
throw new InvalidModificationException("Can't copy a file onto itself");
JSONObject localJSONObject;
if (localFile1.isDirectory())
if (paramBoolean)
localJSONObject = moveDirectory(localFile1, localFile3);
while (true)
{
return localJSONObject;
return copyDirectory(localFile1, localFile3);
if (!paramBoolean)
break;
localJSONObject = moveFile(localFile1, localFile3);
if (!paramString1.startsWith("content://"))
continue;
notifyDelete(paramString1);
return localJSONObject;
}
return copyFile(localFile1, localFile3);
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* Copy a directory
*
* @param srcDir directory to be copied
* @param destinationDir destination to be copied to
* @return a DirectoryEntry object
* @throws JSONException
* @throws IOException
* @throws NoModificationAllowedException
* @throws InvalidModificationException
*/
private JSONObject copyDirectory(File srcDir, File destinationDir) throws JSONException, IOException, NoModificationAllowedException, InvalidModificationException {
// Renaming a file to an existing directory should fail
if (destinationDir.exists() && destinationDir.isFile()) {
throw new InvalidModificationException("Can't rename a file to a directory");
}
// Check to make sure we are not copying the directory into itself
if (isCopyOnItself(srcDir.getAbsolutePath(), destinationDir.getAbsolutePath())) {
throw new InvalidModificationException("Can't copy itself into itself");
}
// See if the destination directory exists. If not create it.
if (!destinationDir.exists()) {
if (!destinationDir.mkdir()) {
// If we can't create the directory then fail
throw new NoModificationAllowedException("Couldn't create the destination directory");
}
}
for (File file : srcDir.listFiles()) {
if (file.isDirectory()) {
copyDirectory(file, destinationDir);
} else {
File destination = new File(destinationDir.getAbsoluteFile() + File.separator + file.getName());
copyFile(file, destination);
}
}
return getEntry(destinationDir);
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* Move a directory
*
* @param srcDir directory to be copied
* @param destinationDir destination to be copied to
* @return a DirectoryEntry object
* @throws JSONException
* @throws IOException
* @throws InvalidModificationException
* @throws NoModificationAllowedException
* @throws FileExistsException
*/
private JSONObject moveDirectory(File srcDir, File destinationDir) throws IOException, JSONException, InvalidModificationException, NoModificationAllowedException, FileExistsException {
// Renaming a file to an existing directory should fail
if (destinationDir.exists() && destinationDir.isFile()) {
throw new InvalidModificationException("Can't rename a file to a directory");
}
// Check to make sure we are not copying the directory into itself
if (isCopyOnItself(srcDir.getAbsolutePath(), destinationDir.getAbsolutePath())) {
throw new InvalidModificationException("Can't move itself into itself");
}
// If the destination directory already exists and is empty then delete it. This is according to spec.
if (destinationDir.exists()) {
if (destinationDir.list().length > 0) {
throw new InvalidModificationException("directory is not empty");
}
}
// Try to rename the directory
if (!srcDir.renameTo(destinationDir)) {
// Trying to rename the directory failed. Possibly because we moved across file system on the device.
// Now we have to do things the hard way
// 1) Copy all the old files
// 2) delete the src directory
copyDirectory(srcDir, destinationDir);
if (destinationDir.exists()) {
removeDirRecursively(srcDir);
} else {
throw new IOException("moved failed");
}
}
return getEntry(destinationDir);
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* Write contents of file.
*
* @param filename The name of the file.
* @param data The contents of the file.
* @param offset The position to begin writing the file.
* @param isBinary True if the file contents are base64-encoded binary data
* @throws FileNotFoundException, IOException
* @throws NoModificationAllowedException
*/
/**/
public long write(String filename, String data, int offset, boolean isBinary) throws FileNotFoundException, IOException, NoModificationAllowedException {
if (filename.startsWith("content://")) {
throw new NoModificationAllowedException("Couldn't write to file given its content URI");
}
filename = FileHelper.getRealPath(filename, cordova);
boolean append = false;
if (offset > 0) {
this.truncateFile(filename, offset);
append = true;
}
byte[] rawData;
if (isBinary) {
rawData = Base64.decode(data, Base64.DEFAULT);
} else {
rawData = data.getBytes();
}
ByteArrayInputStream in = new ByteArrayInputStream(rawData);
FileOutputStream out = new FileOutputStream(filename, append);
byte buff[] = new byte[rawData.length];
in.read(buff, 0, buff.length);
out.write(buff, 0, rawData.length);
out.flush();
out.close();
return rawData.length;
}
项目:cordova-android-chromeview
文件:FileUtils.java
/**
* A setup method that handles the move/copy of files/directories
*
* @param fileName to be copied/moved
* @param newParent is the location where the file will be copied/moved to
* @param newName for the file directory to be called, if null use existing file name
* @param move if false do a copy, if true do a move
* @return a Entry object
* @throws NoModificationAllowedException
* @throws IOException
* @throws InvalidModificationException
* @throws EncodingException
* @throws JSONException
* @throws FileExistsException
*/
private JSONObject transferTo(String fileName, String newParent, String newName, boolean move) throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException {
String newFileName = FileHelper.getRealPath(fileName, cordova);
newParent = FileHelper.getRealPath(newParent, cordova);
// Check for invalid file name
if (newName != null && newName.contains(":")) {
throw new EncodingException("Bad file name");
}
File source = new File(newFileName);
if (!source.exists()) {
// The file/directory we are copying doesn't exist so we should fail.
throw new FileNotFoundException("The source does not exist");
}
File destinationDir = new File(newParent);
if (!destinationDir.exists()) {
// The destination does not exist so we should fail.
throw new FileNotFoundException("The source does not exist");
}
// Figure out where we should be copying to
File destination = createDestination(newName, source, destinationDir);
//Log.d(LOG_TAG, "Source: " + source.getAbsolutePath());
//Log.d(LOG_TAG, "Destin: " + destination.getAbsolutePath());
// Check to see if source and destination are the same file
if (source.getAbsolutePath().equals(destination.getAbsolutePath())) {
throw new InvalidModificationException("Can't copy a file onto itself");
}
if (source.isDirectory()) {
if (move) {
return moveDirectory(source, destination);
} else {
return copyDirectory(source, destination);
}
} else {
if (move) {
JSONObject newFileEntry = moveFile(source, destination);
// If we've moved a file given its content URI, we need to clean up.
if (fileName.startsWith("content://")) {
notifyDelete(fileName);
}
return newFileEntry;
} else {
return copyFile(source, destination);
}
}
}
项目:cordova-android-chromium
文件:FileUtils.java
/**
* A setup method that handles the move/copy of files/directories
*
* @param fileName to be copied/moved
* @param newParent is the location where the file will be copied/moved to
* @param newName for the file directory to be called, if null use existing file name
* @param move if false do a copy, if true do a move
* @return a Entry object
* @throws NoModificationAllowedException
* @throws IOException
* @throws InvalidModificationException
* @throws EncodingException
* @throws JSONException
* @throws FileExistsException
*/
private JSONObject transferTo(String fileName, String newParent, String newName, boolean move) throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException {
String newFileName = FileHelper.getRealPath(fileName, cordova);
newParent = FileHelper.getRealPath(newParent, cordova);
// Check for invalid file name
if (newName != null && newName.contains(":")) {
throw new EncodingException("Bad file name");
}
File source = new File(newFileName);
if (!source.exists()) {
// The file/directory we are copying doesn't exist so we should fail.
throw new FileNotFoundException("The source does not exist");
}
File destinationDir = new File(newParent);
if (!destinationDir.exists()) {
// The destination does not exist so we should fail.
throw new FileNotFoundException("The source does not exist");
}
// Figure out where we should be copying to
File destination = createDestination(newName, source, destinationDir);
//Log.d(LOG_TAG, "Source: " + source.getAbsolutePath());
//Log.d(LOG_TAG, "Destin: " + destination.getAbsolutePath());
// Check to see if source and destination are the same file
if (source.getAbsolutePath().equals(destination.getAbsolutePath())) {
throw new InvalidModificationException("Can't copy a file onto itself");
}
if (source.isDirectory()) {
if (move) {
return moveDirectory(source, destination);
} else {
return copyDirectory(source, destination);
}
} else {
if (move) {
JSONObject newFileEntry = moveFile(source, destination);
// If we've moved a file given its content URI, we need to clean up.
if (fileName.startsWith("content://")) {
notifyDelete(fileName);
}
return newFileEntry;
} else {
return copyFile(source, destination);
}
}
}