-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix custom mapping file can't be imported issue
- Loading branch information
1 parent
9c56f49
commit cd2bfd8
Showing
5 changed files
with
200 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
109 changes: 109 additions & 0 deletions
109
LimeStudio/app/src/main/java/net/toload/main/hd/tools/FileUtil.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
package net.toload.main.hd.tools; | ||
|
||
import android.content.Context; | ||
import android.database.Cursor; | ||
import android.net.Uri; | ||
import android.provider.OpenableColumns; | ||
import android.util.Log; | ||
|
||
import java.io.File; | ||
import java.io.FileNotFoundException; | ||
import java.io.FileOutputStream; | ||
import java.io.IOException; | ||
import java.io.InputStream; | ||
import java.io.OutputStream; | ||
|
||
public class FileUtil { | ||
private static final int EOF = -1; | ||
private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; | ||
|
||
private FileUtil() { | ||
|
||
} | ||
|
||
public static File from(Context context, Uri uri) throws IOException { | ||
InputStream inputStream = context.getContentResolver().openInputStream(uri); | ||
String fileName = getFileName(context, uri); | ||
String[] splitName = splitFileName(fileName); | ||
File tempFile = File.createTempFile(splitName[0], splitName[1]); | ||
tempFile = rename(tempFile, fileName); | ||
tempFile.deleteOnExit(); | ||
FileOutputStream out = null; | ||
try { | ||
out = new FileOutputStream(tempFile); | ||
} catch (FileNotFoundException e) { | ||
e.printStackTrace(); | ||
} | ||
if (inputStream != null) { | ||
copy(inputStream, out); | ||
inputStream.close(); | ||
} | ||
|
||
if (out != null) { | ||
out.close(); | ||
} | ||
return tempFile; | ||
} | ||
|
||
private static String[] splitFileName(String fileName) { | ||
String name = fileName; | ||
String extension = ""; | ||
int i = fileName.lastIndexOf("."); | ||
if (i != -1) { | ||
name = fileName.substring(0, i); | ||
extension = fileName.substring(i); | ||
} | ||
|
||
return new String[]{name, extension}; | ||
} | ||
|
||
private static String getFileName(Context context, Uri uri) { | ||
String result = null; | ||
if (uri.getScheme().equals("content")) { | ||
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); | ||
try { | ||
if (cursor != null && cursor.moveToFirst()) { | ||
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); | ||
} | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
} finally { | ||
if (cursor != null) { | ||
cursor.close(); | ||
} | ||
} | ||
} | ||
if (result == null) { | ||
result = uri.getPath(); | ||
int cut = result.lastIndexOf(File.separator); | ||
if (cut != -1) { | ||
result = result.substring(cut + 1); | ||
} | ||
} | ||
return result; | ||
} | ||
|
||
private static File rename(File file, String newName) { | ||
File newFile = new File(file.getParent(), newName); | ||
if (!newFile.equals(file)) { | ||
if (newFile.exists() && newFile.delete()) { | ||
Log.d("FileUtil", "Delete old " + newName + " file"); | ||
} | ||
if (file.renameTo(newFile)) { | ||
Log.d("FileUtil", "Rename file to " + newName); | ||
} | ||
} | ||
return newFile; | ||
} | ||
|
||
private static long copy(InputStream input, OutputStream output) throws IOException { | ||
long count = 0; | ||
int n; | ||
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; | ||
while (EOF != (n = input.read(buffer))) { | ||
output.write(buffer, 0, n); | ||
count += n; | ||
} | ||
return count; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters