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

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

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

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

Android Studio

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

Q&A

解決済

1回答

2269閲覧

android でテキストファイルを出力

退会済みユーザー

退会済みユーザー

総合スコア0

Android

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

Android Studio

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

0グッド

3クリップ

投稿2017/11/25 08:06

編集2017/11/26 10:43

ここを参考にしてプログラムを書きました。

#当該のコード

java

1import android.app.Activity; 2import android.os.Bundle; 3import android.view.View; 4import android.widget.Button; 5import android.widget.EditText; 6import android.widget.TextView; 7import java.io.BufferedReader; 8import java.io.BufferedWriter; 9import java.io.File; 10import java.io.FileInputStream; 11import java.io.FileNotFoundException; 12import java.io.FileOutputStream; 13import java.io.IOException; 14import java.io.InputStreamReader; 15import java.io.OutputStreamWriter; 16 17 18public class MainActivity extends Activity { 19 private TextView textView; 20 private EditText editText; 21 private String fileName = "file.txt"; 22 23 24 @Override 25 protected void onCreate(Bundle savedInstanceState) { 26 super.onCreate(savedInstanceState); 27 setContentView(R.layout.activity_main); 28 29 textView = findViewById(R.id.text_view); 30 31 editText = findViewById(R.id.edit_text); 32 33 34 createFile(); 35 36 37 Button buttonSave = findViewById(R.id.button_save); 38 buttonSave.setOnClickListener(new View.OnClickListener() { 39 @Override 40 public void onClick(View v) { 41 String text = editText.getText().toString(); 42 saveFile(fileName, text); 43 if (text.length() == 0) { 44 textView.setText(R.string.no_text); 45 } else { 46 textView.setText(R.string.saved); 47 } 48 } 49 }); 50 51 Button buttonRead = findViewById(R.id.button_read); 52 buttonRead.setOnClickListener(new View.OnClickListener() { 53 @Override 54 public void onClick(View v) { 55 String str = readFile(fileName); 56 if (str != null) { 57 textView.setText(str); 58 } else { 59 textView.setText(R.string.read_error); 60 } 61 } 62 }); 63 } 64 65 66 67 public void createFile() { 68 File file = new File(getFilesDir() + "/" + fileName); 69 if(!file.exists()){ 70 try { 71 file.createNewFile(); 72 } catch (IOException e) { 73 } 74 } 75 } 76 77 78 public void saveFile(String file, String str) { 79 try { 80 FileOutputStream fos = openFileOutput(file, MODE_PRIVATE); 81 OutputStreamWriter osw = new OutputStreamWriter(fos); 82 BufferedWriter writer = new BufferedWriter(osw); 83 writer.write(str); 84 writer.close(); 85 } catch (IOException e) { 86 e.printStackTrace(); 87 } 88 } 89 90 public String readFile(String file) { 91 String text = null; 92 try { 93 FileInputStream fileInputStream = openFileInput(file); 94 BufferedReader reader = new BufferedReader( 95 new InputStreamReader(fileInputStream, "UTF-8")); 96 } catch (IOException e) { 97 e.printStackTrace(); 98 } 99 100 return text; 101 } 102 103 104}

#質問
read_fileのボタンを押すとread file error!!が帰ってくるのですが
file.txtは入力した時に作成されるのではなく、あらかじめ用意するものなのでしょうか?そしてこのファイルがどこに保存されるのかを教えていただきたいです。

#これでできました

java

1 2package com.example.ueday.write; 3 4import android.app.Activity; 5import android.os.Bundle; 6import android.view.View; 7import android.widget.Button; 8import android.widget.EditText; 9import android.widget.TextView; 10import java.io.BufferedReader; 11import java.io.BufferedWriter; 12import java.io.File; 13import java.io.FileInputStream; 14import java.io.FileNotFoundException; 15import java.io.FileOutputStream; 16import java.io.IOException; 17import java.io.InputStreamReader; 18import java.io.OutputStreamWriter; 19 20 21public class MainActivity extends Activity { 22 private TextView textView; 23 private EditText editText; 24 private String fileName = "file.txt"; 25 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_main); 31 32 textView = findViewById(R.id.text_view); 33 34 editText = findViewById(R.id.edit_text); 35 36 37 createFile(); 38 39 40 Button buttonSave = findViewById(R.id.button_save); 41 buttonSave.setOnClickListener(new View.OnClickListener() { 42 @Override 43 public void onClick(View v) { 44 String text = editText.getText().toString(); 45 saveFile(fileName, text); 46 if (text.length() == 0) { 47 textView.setText(R.string.no_text); 48 } else { 49 textView.setText(R.string.saved); 50 } 51 } 52 }); 53 54 Button buttonRead = findViewById(R.id.button_read); 55 buttonRead.setOnClickListener(new View.OnClickListener() { 56 @Override 57 public void onClick(View v) { 58 String str = readFile(fileName); 59 if (str != null) { 60 textView.setText(str); 61 } else { 62 textView.setText(R.string.read_error); 63 } 64 } 65 }); 66 } 67 68 69 70 public void createFile() { 71 File file = new File(getFilesDir() + "/" + fileName); 72 if(!file.exists()){ 73 try { 74 file.createNewFile(); 75 } catch (IOException e) { 76 } 77 } 78 } 79 80 81 public void saveFile(String file, String str) { 82 try { 83 FileOutputStream fos = openFileOutput(file, MODE_PRIVATE); 84 OutputStreamWriter osw = new OutputStreamWriter(fos); 85 BufferedWriter writer = new BufferedWriter(osw); 86 writer.write(str); 87 writer.close(); 88 } catch (IOException e) { 89 e.printStackTrace(); 90 } 91 } 92 93 public String readFile(String file) { 94 String text = null; 95 try { 96 FileInputStream fileInputStream = openFileInput(file); 97 BufferedReader reader = new BufferedReader( 98 new InputStreamReader(fileInputStream, "UTF-8")); 99 String lineBuffer; 100 while( (lineBuffer = reader.readLine()) != null ) { 101 text = lineBuffer ; 102 } 103 104 } catch (IOException e) { 105 e.printStackTrace(); 106 } 107 108 return text; 109 } 110 111 112}

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

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

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

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

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

guest

回答1

0

ベストアンサー

openFileInput()はファイルが存在しなければFileNotFoundExceptionが飛びます。自動的に生成はしてくれません。ない場合にどう対処するかはプログラムの設計次第で、「必ずこうすべき」のような答えはありません。なければopenFileOutput()で空のファイルを作ったりなど、いろいろ対処法はあるでしょう。

場所は/data/data/<パッケージ名>/files/の下です。


起動時にファイルがあるか確認して存在しなければ空ファイルを作るサンプルです。getFilesDir()で、上記のディレクトリーのパスを得られます。

Java

1public class MainActivity extends AppCompatActivity { 2 private String mFileName = "file.txt"; 3 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 9 File file = new File(getFilesDir() + "/" + mFileName); 10 if(!file.exists()){ 11 try { 12 file.createNewFile(); 13 } catch (IOException e) { 14 15 } 16 } 17 } 18}

投稿2017/11/25 09:17

編集2017/11/26 07:17
keicha_hrs

総合スコア6768

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

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

退会済みユーザー

退会済みユーザー

2017/11/26 06:07

すいません。openFileOutput()でからのファイルを作る方法を教えていただけないでしょうか?
keicha_hrs

2017/11/26 07:11 編集

回答欄にサンプルソースを書きました。openFileOutput()ではなくてすみません・・・
退会済みユーザー

退会済みユーザー

2017/11/26 10:33

ありがとうございます。createfile()という関数を作って見たのですが、再びread file errorと出てしまいました。readFileの部分がおかしいのでしょうか?
退会済みユーザー

退会済みユーザー

2017/11/26 10:39

すいません自分のreadFileが間違っていました。ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問