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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

Q&A

解決済

2回答

1432閲覧

csvファイルを出力しても中身が表示されない

rott

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

0グッド

0クリップ

投稿2022/01/26 05:23

編集2022/01/26 06:51

前提・実現したいこと

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

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

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

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

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

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

jimbe

2022/01/26 06:33

> 長いので出力に必要な部分以外を削りました ファイル出力が出来ていないのでしたら、実行したら(CSVを出力するパス/ファイルに) ”ABC” と書くだけの最小プログラムをまず作って試したほうが良いのでは無いでしょうか。
rott

2022/01/26 06:49

短くしてやってみたのですが結果は変わらず中身がない状態で出力されました
jimbe

2022/01/26 07:15

やってみられたのでしたら、そのコードをご提示されたほうが、余計な部分が無くて問題点が浮き彫りになり易いのではないでしょうか。
guest

回答2

0

ベストアンサー

とりあえず以下などは読んでおかれた方が良いかと思います。(他にも同様なネタを扱った記事はあると思います。)

【Android】getExternalStorageDirectory()について①
Android10以降のファイル保存の本当に正しいやり方【ACTION_CREATE_DOCUMENT】

ついでに

startActivityForResultがDeprecatedになった対応方法 (サンプルが kotlin なので注意、公式見たほうが良いかもしれません)

投稿2022/01/26 07:09

編集2022/01/26 07:53
jimbe

総合スコア12648

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

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

0

try文内のfor文を外したら出力できました。
試しにwhileでやってみたのですが変わらなかったのでfor文while文を使わない別な方法を考えてみます。
質問に答えてくれてありがとうございました。

//パターン1 /*try { //StandardCharsetName:"UTF_8"だとcsvファイルで文字化けする BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvfile,true), "SHIFT-JIS")); //内容を指定する 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); }*/

投稿2022/01/27 02:46

rott

総合スコア6

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

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

jimbe

2022/01/27 03:58

for の条件で使っていた quiz が 0 以下だっただけでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問