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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

1637閲覧

HoloLens2のセンサデータをcsvファイルに書き込みたいがstreamwriterを使ってもファイルが生成、書き込みされない

退会済みユーザー

退会済みユーザー

総合スコア0

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/08/18 13:08

編集2022/08/19 15:00

現状

研究用にhololens2を用いて、視線データとIMUセンサのデータをcsvファイルとして出力するシステムを作っています。

初めての質問のため至らない点も多いと思いますがデータが取れずに途方に暮れています。何卒よろしくお願いします。

実現したいこと

  • Unityで実装したアプリの中でstreamwriterを用いて毎フレームごとにセンサ値をcsvファイルに追加するコードを作成したい。

発生している問題・エラーメッセージ

Updateクラス内でファイルの作成を指示しているが実行してもファイルが生成されない

該当のソースコード

C#

1using System.IO; 2using System.Text; 3 4public class Gazeget : MonoBehaviour 5{ 6 7 private FileInfo fil; 8 9 void Start() 10 { 11 string filepath = UnityEngine.Application.persistentDataPath + "/data.csv"; 12 fil = new FileInfo(filepath); 13 14 } 15 16 void Update() 17 { 18 19 StreamWriter sw ; 20 sw = fil.AppendText(); 21 sw.WriteLine("センサデータ"); 22 sw.Flush(); 23 sw.Close(); 24 25 26 } 27}

試したこと

・単純にstartの中でファイルを作成した際には作成が確認できたのでパスは間違っていない。(しかし、そこにupdateで書き込むことはできなかった。

・usingを呼び出してその中でstreamwriterを呼び出した。

補足情報(FW/ツールのバージョンなど)

コードから離れて書いているため実際のコードをかなり簡単に書き直したものになっています。

ツール

HoloLens2 Unity 2019 Visual studio 2019

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/08/18 13:29

StreamWriter を初期化しているコードが見当たりませんが Unity ってどこかで自動的にそれをやってくれるのでしょうか?
退会済みユーザー

退会済みユーザー

2022/08/18 13:34

コメントありがとうございます。 Updateの中でswを宣言した後、 fil.AppendText() でstreamwriterが生成されるため、それをswに渡しているという認識です。 これでは初期化されていないことになっているのでしょうか。
退会済みユーザー

退会済みユーザー

2022/08/18 14:28

そもそも質問のコードが動くなんて全く思えないんですけど? fil は Start のローカル変数だし・・・ Unity にはそういうことをすべて超越してるなにか特別なことがあるなら分かりませんが。
退会済みユーザー

退会済みユーザー

2022/08/18 14:40 編集

イイカゲンなコードを質問欄に書かないようにしてください。一事が万事そういう調子だと思われますよ。
退会済みユーザー

退会済みユーザー

2022/08/18 14:41

コードを思い出しながら打っており、飛んだ間違いをしてしまいました。 ご指摘いただきありがとうございます。 もしよろしければ後学のためにその他に何か超越的なことが起きなければ解決しないようなコードのおかしな点があればご指摘いただけますでしょうか。
退会済みユーザー

退会済みユーザー

2022/08/18 14:58

「コードを思い出しながら打っており」が超越的
guest

回答1

0

質問者さんは退会して去ってしまったようですが・・・

質問に書いたコードの通りであるとすると、

Updateクラス内でファイルの作成を指示しているが実行してもファイルが生成されない

で「ファイルが生成されない」というのは、(1) 生成されているが見落としている、とか、(2) 作成するフォルダにアクセス権が無くて例外がスローされているとかではないかと思います。

.NET Framework 4.8 の以下のコードのコンソールアプリで cvs ファイルは存在しない状態から試してみました。アプリはフォルダには読み取り・書き込み権限を持っています。

using System.IO; namespace ConsoleApp4 { internal class Program { static void Main(string[] args) { string filepath = @"C:\Users\surfe\Documents\Visual Studio 2022\CsProject\ConsoleApp4\ConsoleApp4\TextFile1.csv"; FileInfo fi = new FileInfo(filepath); using (StreamWriter sw = fi.AppendText()) { sw.WriteLine("This,is Extra,Text"); } } } }

実行結果は以下の通りです。

イメージ説明

上のコードの filepath で指定した通りのフォルダに指定した名前 TextFile1.csv でファイルが新規作成され sw.WriteLine("This,is Extra,Text"); で書き込んだとおりに文字列が追加されています。

ちなみに、sw.WriteLine("This,is Extra,Text"); をコメントアウトして何も書き込まないようにしても、TextFile1.csv ファイルは新規作成されます。

上に書いた (1), (2) をチェックしてみてください。

投稿2022/08/19 06:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問