teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問の内容に照らして回答の方向性を修正する

2019/06/07 14:45

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -1,7 +1,5 @@
1
- Androidでは`c:\Sample\Test.txt`のようなWindows方式のフルパス記述利用できません。AndroidのOS中核はLinuxすからLinuxのパス記述いる必要があり
1
+ Androidエミュレーター上動作させたアプリケーションからエミュレーターを動作させているOSのファイを直接読み書きすることはできません。openFileInput()やopenFileOutput()は、Android端末内部ストレージ特別な領域を読み書きするためメソッドとして提供されているので、引数にWindows方式のフルパス記述しても通せん
2
2
 
3
- また、Androidはセキュリティー保護の観点から、ストレージへのアクセス権限が非常厳格になっています。ストレージのどの領域に対して読み書きしたいのか、それによってもプログラムの書き方が変わってきます。openFileInput()やopenFileOutput()は、アプリケーションごとに提供される専領域へ読み書きを行うためのメソッドとして提供さています。そ具体的なパス`/data/user/0/<アプリケーションのパッケージ名>/files/`ということになります。こディレクトリー下に、ユーザーが扱いたいファイル(今回ならばSample.txt)を作成し、読み書きする処理を作るこになります。
3
+ もし、Android内部ストレージに対して読み書きする方針に転換し、それにopenFileInput()やopenFileOutput()いるであば、次サイト参考になのではないかと思います。
4
4
 
5
- openFileInput()/openFileOutput()を用いたファイル読み書きの方法としては、以下のサイトが参考になるかと思います。
6
-
7
5
  [[Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream | nyan のアプリ開発](https://akira-watson.com/android/fileoutputstream.html)