質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1984閲覧

rawフォルダにcpとかのコマンドファイルを含めて実行できるようにしたい

sun-solar-arrow

総合スコア113

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/05/05 08:32

Androidの開発で質問です。
コマンドファイル(treeとかcpとか)をrawフォルダに含めたのですが、どのように実行すればいいのか分かりません。普通なら

Java

1Process process=Runtime.getRuntime().exec("tree");

で実行したり、

Java

1Process process=Runtime.getRuntime().exec("/sdcard/tree");

みたいにパスを指定すれば良いですが、
今回はrawフォルダに含めたのでパスを指定することもできません。
どのようにして実行すればいいですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

rawファイルの中にコマンドが記述されているという事でしょうか。

それなら、Context#getResources()#openRawResourceでrawファイルのInputStreamを取得し、それを文字列に変換することでコマンドを取得できると思います。

投稿2016/05/05 12:58

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sun-solar-arrow

2016/05/08 11:16

実行の方法は (Stringに変換したInputStreamがtree) Process process=Runtime.getRuntime().exec(tree); や、(こちらはcp) Process process=Runtime.getRuntime().exec(cp+"-R /sdcard/hogehoge/ /sdcard/hoge/); とかでいいのですよね?
yona

2016/05/08 11:23

いいと思いますよ。
sun-solar-arrow

2016/05/11 12:58

IOExceptionが発生します。 コマンドを実行するメソッドのソース private void checkVersion() throws Throwable{ InputStream versionStream=this.getResources().openRawResource(R.raw.git); String verchecked=Event.inputStreamToString(versionStream); java.lang.Process p; TextView vertext=(TextView) findViewById(R.id.version); try{ p=Runtime.getRuntime().exec(verchecked+" version"); InputStream returnVerison=p.getInputStream(); String ver=Event.inputStreamToString(returnVerison); vertext.setText(ver); }catch (IOException e){ e.printStackTrace(); vertext.setText("取得失敗:"+e); } } //○○ versionコマンドはあります InputStreamに変換するメソッドのソース static String inputStreamToString(InputStream is){ BufferedReader reader = null; try{ reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); } catch (UnsupportedEncodingException e){ e.printStackTrace(); } StringBuilder sb = new StringBuilder(); String b = null; int line = 0; try{ while ((b=reader.readLine()) !=null){ sb.append(b,0,line); } } catch (IOException e){ } return sb.toString(); } スタックトレース: java.io.IOException Error running exec() Command :[Version] Working directory null Environment null
yona

2016/05/11 13:04

エラーログ出されても困ります。 どこの行で発生していますか?
sun-solar-arrow

2016/05/12 06:07 編集

コマンドを実行するメソッド(checkVersion)の9行目の p=Runtime.getRuntime().exec(verchecked+" version"); だと思います。
yona

2016/05/12 06:16

vercheckedと"version"の間に空白は必要ありませんか? また、ファイル操作するパーミッションは追加されていますか?
sun-solar-arrow

2016/05/12 11:05

空白は入れてあります。 パーミッションは確認してみます…というかrawに含めているから大丈夫だと思ったのですが。
yona

2016/05/12 11:20

コマンドの中でファイル操作をするものがありませんか?
sun-solar-arrow

2016/05/12 11:29

ありますね。今回はファイルを操作したりしていませんが。
sun-solar-arrow

2016/05/21 00:05

すみません、うまく動かないのはInputStreamをうまく変換できていないからだと思います。今回はベストアンサーにさせて頂き、InputStreamの変換の仕方を別のサイトで聞いてみます。ありがとうございました。
sun-solar-arrow

2016/06/23 06:53

バイナリファイルということを書き忘れていました。すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問