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

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

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

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

2671閲覧

mkdir()でfalseが返る

ko_ba_ya_shi

総合スコア10

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/07/09 12:55

編集2017/07/09 13:02

###前提・実現したいこと
アンドロイドスマホの内部ストレージに、プログラム上でフォルダとファイルを作りたいですが、下記コードのmkdirs()でfalseが返るので作れません。

###該当のソースコード

java

1File[] directory = act.getExternalFilesDirs(null); 2File file = new File(directory[0].getAbsolutePath()+"/text.txt"); 3try { 4 boolean res0=directory[0].mkdirs(); 5 boolean res= file.createNewFile(); 6 FileOutputStream fo = new FileOutputStream(file, true); 7 8 // OutputStreamWriterオブジェクト生成(文字コードの指定) 9 OutputStreamWriter ow = new OutputStreamWriter(fo, "UTF-8"); 10 ow.write(SaveData); 11 12// ストリームの解放 13 ow.close(); 14 fo.close(); 15 16 }catch (IOException e) 17 { 18 e.printStackTrace(); 19 }

###試したこと
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
は、androidManifest.xmlに記載しましたが、それでも弾かれるので、困っています。
また、PCと実機を接続し、内部ストレージを参照すると、同名のフォルダどころか、\android\data\配下のアプリ専用フォルダさえ作られないのでフォルダ名が衝突している可能性はありません。

###補足情報(言語/FW/ツール等のバージョンなど)
android studio 2.3.3使用

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

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

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

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

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

guest

回答3

0

ベストアンサー

お使いの端末はAndroid6.0以降でしょうか?
そうだとしたら、Dangerous Permissionsと呼ばれる権限のリクエストが必要なものがあります。

https://feel-log.net/android/marshmallow-permissions-runtime-request/

今回の場合はWRITE_EXTERNAL_STORAGEが該当します。

余談ですが、読み込みをする場合はREAD_EXTERNAL_STORAGEが必要ですが、同じPermission Groupの権限が付与されていれば新たに取る必要はありません。(要求してもダイアログが表示されません)

投稿2017/07/10 05:47

編集2017/07/10 05:50
Kmassa

総合スコア161

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

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

ko_ba_ya_shi

2017/07/10 09:25

ご返答をありがとうございます。 ご提示いただきましたリンクを参考にしたところ、フォルダが作れました。
guest

0

READも付ける必要があるようですよ。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

https://stackoverflow.com/questions/38521972/why-does-my-file-mkdirs-always-return-false

投稿2017/07/10 03:02

編集2017/07/10 03:42
mosapride

総合スコア1480

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

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

0

1行目と2行目の間でdirectory[0]を表示してみましょう。

投稿2017/07/09 14:07

maiko0318

総合スコア876

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

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

ko_ba_ya_shi

2017/07/09 14:40

ご返答をありがとうございます。 1行目と2行目の間にブレークポイントを貼って、 ここでdirectory[0]の中身を見ましたところ、 /storage/emulated/0/Android/data/パッケージ名/files でした。
maiko0318

2017/07/09 14:59

そのディレクトリーは作成できるものですか? コマンドラインで作成してみてください。 権限的なものはクリアされていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問