前提・実現したいこと
AndroidStudioで結果をcsvにして出力するものを作っています。
csvファイルが指定したパスに出力されるのですが中身がない状態で出力されてしまいます
有識者の方何卒ご助力お願いいたします
エラーメッセージは出ていません
パターンが2つありますが二つとも同じような状態になります。
該当のソースコード
長いので出力に必要な部分以外を削りました
result.java
package com.example.Namaeate; import static com.example.Namaeate.StartMenu.kanja_name; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.content.Intent; import android.media.MediaScannerConnection; import android.os.Bundle; import android.os.Environment; import android.view.Gravity; import android.view.View; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; public class result extends AppCompatActivity { private TextView maru; private TextView batsu; private TextView timestext; public int Debug; public int prob; //問題数 public int quiz; //現在の問題番号 private ArrayList<Integer> ans; public int count; //正解数 public int maisu; public int Difficult; private ArrayList<String> Filename; private ArrayList<Integer> sec; private String strDate; private File csvfile,anspath = new File(Environment.getExternalStorageDirectory().getPath() + "/file/"+ kanja_name +"/結果"); public String[] DifData = {"1","2","3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); //Answerから読み込み Intent intent = getIntent(); Debug = intent.getIntExtra("Debug",0); maisu = intent.getIntExtra("maisu",4); Difficult = intent.getIntExtra("Difficult",2); prob = intent.getIntExtra("prob",0); Filename = new ArrayList<String>(intent.getStringArrayListExtra("Filename")); count = intent.getIntExtra("count",0); ans = new ArrayList<Integer>(intent.getIntegerArrayListExtra("ans")); sec = new ArrayList<Integer>(intent.getIntegerArrayListExtra("sec")); getDate(); outputCSV(); } public void getDate(){ //日付 Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); strDate = sdf.format(c.getTime()); } public void outputCSV(){ //保存形式{ ,namaeate(maisu,difficult),答え,ans(0,1),second} if(!anspath.exists()) {//なかったら作る anspath.mkdirs(); } csvfile = new File(anspath,"/" + strDate + ".csv"); //パターン1 /*try { //StandardCharsetName:"UTF_8"だとcsvファイルで文字化けする BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvfile,true), "SHIFT-JIS")); for (int i = 0; i < quiz; i++) {//内容を指定する bw.write(",abdcg");//,でセルを区切る bw.newLine(); }//ファイルに書き出す bw.close(); toastMake(strDate + "保存しました",0,500); } catch (UnsupportedEncodingException e) { e.printStackTrace(); toastMake("保存失敗_Unsupported",0,500); } catch (FileNotFoundException e) { e.printStackTrace(); toastMake("保存失敗_FileNotFound",0,500); } catch (IOException e) { e.printStackTrace(); toastMake("保存失敗_IOException",0,500); }*/ //パターン2/////////////// try { //出力先を作成する FileWriter fw = new FileWriter(csvfile, true); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); //内容を指定する for (int i = 0; i < quiz; i++) {//内容を指定する pw.print(",名前あて(" + maisu + "枚" + DifData[Difficult] + ")," + Filename.get(i) + "," + ans.get(i) + "," + sec.get(i) );//,でセルを区切る pw.println(); }//ファイルに書き出す pw.close(); //終了メッセージを画面に出力する toastMake(strDate + "保存しました",0,500); } catch (IOException ex) { //例外時処理 ex.printStackTrace(); toastMake("保存失敗",0,500); } ////////////////// //これを入れると pc から見えるようになる。時間差で見えるようになるため一度再接続するのが良い MediaScannerConnection.scanFile(this,new String[]{csvfile.getAbsolutePath()},null,null); }
試したこと
パターン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
まだ回答がついていません
会員登録して回答してみよう