在android(通过android sdk / tools文件夹)命令行中,我们可以执行linux shell命令同样访问mnt文件夹/数据文件夹。 (例如cd data ls)现在该命令我想在android中以编程方式执行,那怎么可能呢?
<小时/> 我使用以下代码来执行shell命令
Process p = Runtime.getRuntime().exec("cd data");
但它给了我异常
java.io.IOException: Error running exec(). Command: [cd, data] Working
Directory: null Environment: null
<小时/> 那我该怎么办呢。谢谢。
答案 0 :(得分:6)
cd
不是Linux命令,它是内置于shell中的命令;它在该shell进程的上下文中更改当前工作目录 。在您的情况下,如果命令要成功,那么仅对子进程成功(这将很快终止)并且对您自己的进程没有影响。
答案 1 :(得分:0)
试试这个:
Process p = Runtime.getRuntime().exec("cd /data");
答案 2 :(得分:0)
要检索应用程序私有数据文件夹的路径,请使用Java中的以下内容:
File MyData = Ctxt.getDir("Foo");
其中Ctxt是Context对象,如Activity。它会返回一条像/data/data/com.activity.networkRequestDetector/app_Foo
这样的路径。请注意,Android中不鼓励读/写/data/data/com.activity.networkRequestDetector/
- 它是您应用程序的沙箱根目录,不能播放。
要从数据文件夹中打开文件,请使用以下内容:
FileInputStream Stm = new FileInputStream(new File(MyData, "Filename.txt"));
通常,您的应用程序也可以执行任何shell命令。 Shell命令只是像其他人一样使用API的程序。
答案 3 :(得分:0)
在Android上,您的进程无权读取其他应用的/data/data/_other-package-name_
中的文件,或列出目录/data/data/_other-package-name_/files
中的私有文件。但它确实有权列出和读取lib目录/data/data/_other-package-name_/lib
中的文件,如果 other-package 打开此文件,您可以在/data/data/_other-package-name_/files
中查看特定文件公开。
即。如果 other-package 符合以下内容:
FileOutputStream fos = openFileOutput("public_file", Context.MODE_WORLD_READABLE);
fos.write("hello world".getBytes());
fos.close();
然后你的包可以这样读取这个文件:
byte[] bytes = new byte[100];
FileInputStream fis = new FileInputStream(new File("/data/data/*other-package*/files/public_file"));
int cnt = fis.read(bytes);
fis.close();
Log.d("Two_Libs", new String(bytes, 0, cnt));
但是你不能列出该目录中的公共文件来发现它们。
答案 4 :(得分:0)
用途如下:-
Process process = Runtime.getRuntime().exec("command to be executed");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));