Java tutorial
//package com.java2s; /* * Copyright (c) 2016 Aalto University * * 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. */ import android.content.Context; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; public class Main { public static String createDirInHome(Context context, final String subDir) throws IOException, InterruptedException { File tmpFile = checkAndCreateDir(context.getApplicationInfo().dataDir + File.separator + subDir); return tmpFile.getAbsolutePath(); } /** * check whether $dirPath exists or not, if not create one and chmod to 755 * @param dirPath * @return * @throws IOException * @throws InterruptedException */ public static File checkAndCreateDir(String dirPath) throws IOException, InterruptedException { File tmpDirPath = new File(dirPath); if (!tmpDirPath.isDirectory()) { //create the directory if not there //create the parent directory if not exists tmpDirPath.mkdirs(); //change the mod of the directory in order to hold executable file //remember to refer to the chmod under /system/bin directory String output = execUnixCommand(("/system/bin/chmod 755 " + tmpDirPath).split(" "), null); //Log.d(TAG_CLASS, "execUnixCommand: " + output); } return tmpDirPath; } /** * create a child process with environment variables * @param command * @param envVars * @return * @throws InterruptedException * @throws IOException */ public static String execUnixCommand(String[] command, Map<String, String> envVars) throws InterruptedException, IOException { /* ProcessBuilder processBuilder = new ProcessBuilder(command); if ( envVars != null ){ Map<String, String> env = processBuilder.environment(); env.clear(); env.putAll(envVars); } Process process = processBuilder.start(); processBuilder.redirectErrorStream(false); process.waitFor(); String outputWithError = loadStream(process.getInputStream()) + loadStream(process.getErrorStream()); return outputWithError; */ ProcessBuilder processBuilder = new ProcessBuilder(command); if (envVars != null) { Map<String, String> env = processBuilder.environment(); env.clear(); env.putAll(envVars); } Process process = processBuilder.start(); String output = loadStream(process.getInputStream()); String error = loadStream(process.getErrorStream()); process.waitFor(); return output + "\n" + error; } /** * read the inputstream to String * @param inputStream * @return * @throws IOException */ public static String loadStream(InputStream inputStream) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder sb = new StringBuilder(); String tmpLine; while ((tmpLine = br.readLine()) != null) { sb.append(tmpLine); } br.close(); return sb.toString(); } }