bcv-vf/src/the/bytecode/club/bytecodeviewer/MiscUtils.java
2018-01-31 07:41:24 -08:00

137 lines
4.6 KiB
Java

package the.bytecode.club.bytecodeviewer;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Random;
/***************************************************************************
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
/**
* A collection of Misc Utils.
*
* @author Konloch
*/
public class MiscUtils {
private static final String AB = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private static final String AN = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static Random rnd = new Random();
/**
* Returns a random string without numbers
*
* @param len the length of the String
* @return the randomized string
*/
public static String randomString(int len) {
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
sb.append(AB.charAt(rnd.nextInt(AB.length())));
return sb.toString();
}
public static void printProcess(Process process) throws Exception {
//Read out dir output
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
is = process.getErrorStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
/**
* Returns a random string with numbers
*
* @param len the length of the String
* @return the randomized string
*/
public static String randomStringNum(int len) {
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
sb.append(AN.charAt(rnd.nextInt(AN.length())));
return sb.toString();
}
/**
* Checks the file system to ensure it's a unique name
*
* @param start directory it'll be in
* @param ext the file extension it'll use
* @return the unique name
*/
public static String getUniqueName(String start, String ext) {
String s = null;
boolean b = true;
File f = null;
String m = null;
while (b) {
m = MiscUtils.randomString(32);
f = new File(start + m + ext);
if (!f.exists()) {
s = start + m;
b = false;
}
}
return s;
}
/**
* Checks the file system to ensure it's a unique number
*
* @param start directory it'll be in
* @param ext the file extension it'll use
* @return the unique number
*/
public static int getClassNumber(String start, String ext) {
boolean b = true;
int i = 0;
while (b) {
File tempF = new File(start + i + ext);
if (!tempF.exists())
b = false;
else
i++;
}
return i;
}
public static String extension(String name) {
return name.substring(name.lastIndexOf('.') + 1);
}
public static String append(File file, String extension) {
String path = file.getAbsolutePath();
if (!path.endsWith(extension))
path = path + extension;
return path;
}
}