前提・実現したいこと
AndroidStudioで結果をcsvにして出力するものを作っています。
csvファイルが指定したパスに出力されるのですが中身がない状態で出力されてしまいます
有識者の方何卒ご助力お願いいたします
エラーメッセージは出ていません
パターンが2つありますが二つとも同じような状態になります。
該当のソースコード
長いので出力に必要な部分以外を削りました
result.java
1package com.example.Namaeate; 2 3import static com.example.Namaeate.StartMenu.kanja_name; 4 5import androidx.appcompat.app.AppCompatActivity; 6import androidx.core.app.ActivityCompat; 7 8import android.content.Intent; 9import android.media.MediaScannerConnection; 10import android.os.Bundle; 11import android.os.Environment; 12import android.view.Gravity; 13import android.view.View; 14import android.widget.TextView; 15import android.widget.Toast; 16 17import java.io.BufferedWriter; 18import java.io.File; 19import java.io.FileWriter; 20import java.io.IOException; 21import java.io.PrintWriter; 22import java.text.SimpleDateFormat; 23import java.util.ArrayList; 24import java.util.Calendar; 25 26public class result extends AppCompatActivity { 27 28 private TextView maru; 29 private TextView batsu; 30 private TextView timestext; 31 32 public int Debug; 33 34 public int prob; //問題数 35 public int quiz; //現在の問題番号 36 private ArrayList<Integer> ans; 37 public int count; //正解数 38 public int maisu; 39 public int Difficult; 40 private ArrayList<String> Filename; 41 private ArrayList<Integer> sec; 42 43 private String strDate; 44 private File csvfile,anspath = new File(Environment.getExternalStorageDirectory().getPath() + "/file/"+ kanja_name +"/結果"); 45 46 public String[] DifData = {"1","2","3"}; 47 48 @Override 49 protected void onCreate(Bundle savedInstanceState) { 50 super.onCreate(savedInstanceState); 51 setContentView(R.layout.activity_result); 52 53 //Answerから読み込み 54 Intent intent = getIntent(); 55 Debug = intent.getIntExtra("Debug",0); 56 maisu = intent.getIntExtra("maisu",4); 57 Difficult = intent.getIntExtra("Difficult",2); 58 prob = intent.getIntExtra("prob",0); 59 Filename = new ArrayList<String>(intent.getStringArrayListExtra("Filename")); 60 count = intent.getIntExtra("count",0); 61 ans = new ArrayList<Integer>(intent.getIntegerArrayListExtra("ans")); 62 sec = new ArrayList<Integer>(intent.getIntegerArrayListExtra("sec")); 63 64 getDate(); 65 66 outputCSV(); 67 } 68 69 public void getDate(){ 70 //日付 71 Calendar c = Calendar.getInstance(); 72 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 73 strDate = sdf.format(c.getTime()); 74 } 75 76 public void outputCSV(){ 77 //保存形式{ ,namaeate(maisu,difficult),答え,ans(0,1),second} 78 79 if(!anspath.exists()) {//なかったら作る 80 anspath.mkdirs(); 81 } 82 csvfile = new File(anspath,"/" + strDate + ".csv"); 83 84 //パターン1 85 /*try { 86 //StandardCharsetName:"UTF_8"だとcsvファイルで文字化けする 87 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvfile,true), "SHIFT-JIS")); 88 for (int i = 0; i < quiz; i++) {//内容を指定する 89 bw.write(",abdcg");//,でセルを区切る 90 bw.newLine(); 91 }//ファイルに書き出す 92 bw.close(); 93 toastMake(strDate + "保存しました",0,500); 94 } catch (UnsupportedEncodingException e) { 95 e.printStackTrace(); 96 toastMake("保存失敗_Unsupported",0,500); 97 } catch (FileNotFoundException e) { 98 e.printStackTrace(); 99 toastMake("保存失敗_FileNotFound",0,500); 100 } catch (IOException e) { 101 e.printStackTrace(); 102 toastMake("保存失敗_IOException",0,500); 103 }*/ 104 105 //パターン2/////////////// 106 try { 107 //出力先を作成する 108 FileWriter fw = new FileWriter(csvfile, true); 109 PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); 110 111 //内容を指定する 112 for (int i = 0; i < quiz; i++) {//内容を指定する 113 pw.print(",名前あて(" + maisu + "枚" + DifData[Difficult] + ")," + Filename.get(i) + "," + ans.get(i) + "," + sec.get(i) );//,でセルを区切る 114 pw.println(); 115 }//ファイルに書き出す 116 117 pw.close(); 118 119 //終了メッセージを画面に出力する 120 toastMake(strDate + "保存しました",0,500); 121 } catch (IOException ex) { 122 //例外時処理 123 ex.printStackTrace(); 124 toastMake("保存失敗",0,500); 125 } 126 ////////////////// 127 128 //これを入れると pc から見えるようになる。時間差で見えるようになるため一度再接続するのが良い 129 MediaScannerConnection.scanFile(this,new String[]{csvfile.getAbsolutePath()},null,null); 130 }
試したこと
パターン2はこちらを参考にしました
https://teratail.com/questions/25005
Androidstudioのバージョン
Android Studio Arctic Fox | 2020.3.1 Patch 4
Build #AI-203.7717.56.2031.7935034, built on November 21, 2021
ランタイム・バージョン: 11.0.10+0-b96-7249189 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 6
Registry: external.system.auto.import.disabled=true
Non-Bundled Plugins: org.jetbrains.kotlin
回答2件