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

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

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

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

Q&A

解決済

1回答

3666閲覧

Androidの自作アプリでテキストファイルを読むにはどうしたら良いのでしょうか。

na-ka

総合スコア12

Android

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

0グッド

0クリップ

投稿2017/03/20 03:10

###前提・実現したいこと
アンドロイド開発の初心者で自作アプリに挑戦しています。
自作アプリから既存のテキストファイルを読みたいのですが、何処にファイルを置けば自作アプリから読めるのでしょうか。
アンドロイド入門サイトを調べて、アプリ内でのファイルへの書き込みと、その書き込んだファイルからの読みだしはできます。実機でもできましたが実機のファイルマネージャでそのファイルを検索しても見つかりません。
「一度実機を再起動させる」という記事もあったので試しましたが駄目です。
そもそも「Kikat以降はSDカードの書き込みはできない」という記事もあり、私が無理なことをしようとしているのでしょうか。
以下に私が試したものを記しますのでご教示頂きますようよろしくお願いします。
###該当のソースコード
[AndroidManifesy.xml]
.....
</application>

<!--以下のパーミッションを追加しました--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> </manifest>

[MainDBActivity.java]
package com.android.nakajima.mydbapplication;

import 略

@SuppressWarnings("deprecation")
public class MainDBActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_db); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); File file = null; String readPath = ""; TextView oText1 = (TextView) findViewById(R.id.text1); TextView oText2 = (TextView) findViewById(R.id.text2); file = Environment.getExternalStorageDirectory(); readPath += "SDカード : " + file.getPath() + "\n"; File dir = new File(file.getPath()); final File[] filelist = dir.listFiles(); oText1.setText(readPath); String str1 = "ファイルへ書き込んだ文字です。"; //--------------------- //file write String fn = "testtest1.txt"; String readText = ""; str1 = orgRead(fn); readText = orgRead(fn); if (readText == "") { readText = "ファイルの読みだしデータはありませんでした。"; }else { readText="ファイルからの読みだしデータは[ " + readText + ": ]です。"; } oText2.setText(readText); } //--- ファイル書き込み --- void orgWrite(String fn, String wt){ try{ FileOutputStream fout = openFileOutput(fn, MODE_WORLD_READABLE); fout.write(wt.getBytes()); Log.e("OK","正常書き込みされました"); }catch(FileNotFoundException e){ Log.e("FNF","ファイルがありません"); }catch(IOException e){ Log.e("IOExp","OIエラーです"); } } //--- ファイル読み出し --- String orgRead(String fn){ String str = ""; try{ FileInputStream in = openFileInput(fn); BufferedReader reader = new BufferedReader( new InputStreamReader( in , "UTF-8") ); String tmp; while( (tmp = reader.readLine()) != null ){ str = str + tmp + "--\n"; } reader.close(); Log.e("strs", "読み取った値は= "+str); }catch(FileNotFoundException e){ Log.e("FNF","エラー:読み込みファイルがありません"); str = "FNFエラー"; }catch( IOException e ) { e.printStackTrace(); Log.e("strs", "エラー:読み取りエラーです"); str = "IOエラー"; } return str; }

}

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境: AndroidStudio2.2.3
実機: Zenfone2Laser
###前提・実現したいこと
Androidの自作アプリでテキストファイルを読むにはどうしたら良いのでしょうか。

アンドロイド開発の初心者で自作アプリに挑戦しています。
自作アプリから既存のテキストファイルを読みたいのですが、何処にファイルを置けば自作アプリから読めるのでしょうか。
アンドロイド入門サイトを調べて、アプリ内でのファイルへの書き込みと、その書き込んだファイルからの読みだしはできます。実機でもできましたが実機のファイルマネージャでそのファイルを検索しても見つかりません。
「一度実機を再起動させる」という記事もあったので試しましたが駄目です。
そもそも「Kikat以降はSDカードの書き込みはできない」という記事もあり、私が無理なことをしようとしているのでしょうか。
以下に私が試したものを記しますのでご教示頂きますようよろしくお願いします。
###該当のソースコード
[AndroidManifesy.xml]
.....
</application>

<!--以下のパーミッションを追加しました--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> </manifest>

[MainDBActivity.java]
package com.android.nakajima.mydbapplication;

import 略

@SuppressWarnings("deprecation")
public class MainDBActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_db); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); File file = null; String readPath = ""; TextView oText1 = (TextView) findViewById(R.id.text1); TextView oText2 = (TextView) findViewById(R.id.text2); file = Environment.getExternalStorageDirectory(); readPath += "SDカード : " + file.getPath() + "\n"; File dir = new File(file.getPath()); final File[] filelist = dir.listFiles(); oText1.setText(readPath); String str1 = "ファイルへ書き込んだ文字です。"; //--------------------- //file write String fn = "testtest1.txt"; String readText = ""; str1 = orgRead(fn); readText = orgRead(fn); if (readText == "") { readText = "ファイルの読みだしデータはありませんでした。"; }else { readText="ファイルからの読みだしデータは[ " + readText + ": ]です。"; } oText2.setText(readText); } //--- ファイル書き込み --- void orgWrite(String fn, String wt){ try{ FileOutputStream fout = openFileOutput(fn, MODE_WORLD_READABLE); fout.write(wt.getBytes()); Log.e("OK","正常書き込みされました"); }catch(FileNotFoundException e){ Log.e("FNF","ファイルがありません"); }catch(IOException e){ Log.e("IOExp","OIエラーです"); } } //--- ファイル読み出し --- String orgRead(String fn){ String str = ""; try{ FileInputStream in = openFileInput(fn); BufferedReader reader = new BufferedReader( new InputStreamReader( in , "UTF-8") ); String tmp; while( (tmp = reader.readLine()) != null ){ str = str + tmp + "--\n"; } reader.close(); Log.e("strs", "読み取った値は= "+str); }catch(FileNotFoundException e){ Log.e("FNF","エラー:読み込みファイルがありません"); str = "FNFエラー"; }catch( IOException e ) { e.printStackTrace(); Log.e("strs", "エラー:読み取りエラーです"); str = "IOエラー"; } return str; }

}

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境: AndroidStudio2.2.3
実機: Zenfone2Laser

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

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

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

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

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

guest

回答1

0

ベストアンサー

Androidではアプリ専用のディレクトリが作られます。
その中でも特定のフォルダはそのアプリしかアクセスできないようになっています。
そのため、ファイルマネージャー等の別アプリからはフォルダやファイルを見ることはできません。

また、コードはコード用の記述に修正してください。

投稿2017/03/20 03:44

編集2017/03/20 03:53
yona

総合スコア18155

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

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

na-ka

2017/03/20 03:59

yonaさん、 早速ありがとうございます、na-kaです。 私の書き方が不十分だったと思いますが、私がやりたいことは、既存のテキストファイルを自作アプリで読むためにはどのフォルダに置くのかです。このようなことは自作アプリでは出来ないのでしょうか。 よろしくお願いいたします。
yona

2017/03/20 04:03

それならassetsに入れておき、アプリの初回起動時にassetsから特定のフォルダにコピーするといいですね。
na-ka

2017/03/20 08:46

yonaさん、 ありがとうございます。 assetsフォルダーというのを初めて知りました。しかし、ここのファイルはアプリで使うような固定した内容のファイルを置く場所と理解しました。私がやりたいことは、任意のデータファイルをアプリから読みたいということで、このassetsフォルダーでは出来ないと思いますがいかがでしょうか。
yona

2017/03/20 09:15

任意のデータファイルとはなんですか?どのように作り、どこに保存されているんですか? あなたの考える任意は他の人が考える任意とは違いますよ。
na-ka

2017/03/21 06:02

yonaさん、 説明が不十分ですみません。 私がやりたいことは、パソコンで作ったテキストデータファイルをスマホの自作アプリで読んで処理したいということです。そのたみに、パソコンからはメールやSDカードを経由してスマホへは持っていけますが、そのファイルを何処へ置けばアプリから読めるのかが解らず困っています。 宜しくお願いします。
yona

2017/03/21 06:46

それなら、アクションにIntent.ACTION_GET_CONTENTを設定した暗黙Intentでファイルを選択し、選択したファイルをアプリ内のフォルダにコピーするといいですね。
na-ka

2017/03/21 07:09

yonaさん、 早速ありがとうございます。 まだ仰っていることが十分に理解できておりませんが、ヒントを頂いたので自分で調べてみます。 どうしてもわからない時は、新たな質問させて頂きます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問