C#でテキストファイル読み込みの問題:共有フォルダにアクセスできない

このQ&Aのポイント
  • C#でテキストファイルの読み込みが上手くいかず困っています。他のPCの共有フォルダにアクセスしたいのですが、ファイルがあるディレクトリが見つからないエラーが発生してしまいます。
  • 使用しているVisual Studio2017では、問題なくファイル指定ができるのに自分のPCでは上記のエラーが発生します。どのように設定すればエラーを回避できるのでしょうか?
  • ネットで検索しながらプログラムを作成している初心者ですので、お手柔らかにご教示いただければ幸いです。
回答を見る
  • ベストアンサー

C#にてテキストファイル読み込み時のファイル指定

C#でテキストファイルの読み込みがうまくいかず困っています。 他のPCの共有フォルダにアクセスしたいのですが //読み込むテキストファイル string textFile = @"192.168.0.**\test\a1.txt"; //文字コード(ここでは、Shift JIS) System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); //テキストファイルの中身をすべて読み込む string str = System.IO.File.ReadAllText(textFile, enc); ネットで検索した文に従ってやっていますが、 System.IO.DirectoryNotFoundException: 'パス 'C:\Users\***\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\192.168.0.**\test\a1.txt' の一部が見つかりませんでした。 と、ファイルがあるディレクトリが追加されています。 どこを設定すれば無視できるようになりますか? Visual Studio2017を使用しています。 会社のPCでは問題なく指定できたのですが 自分のPCだと上記のようになります。 ネットで文を検索しながら作っている素人です。 お手柔らかにお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

やったことがないケースですが 先頭に\\ではどうでしょうか?

toshi0906xx
質問者

お礼

文体は変えず、ツールのオプションをあれこれいじっていると 読み込めるようになっていました。 結局どの設定だったかわからず・・・ BAは最初に回答をくださった方にしました。

toshi0906xx
質問者

補足

すみません。 コピー漏れです。 \\は入れています。

その他の回答 (3)

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.4

以下のサイトが参考にならないでしょうか。 http://cream-worker.blog.jp/archives/1057332438.html

  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.3

>\\は入れています。 具体的には、どこに入れていますか? またエクスプローラーで同パスにてアクセスできるかも確認しましょう。

  • skp026
  • ベストアンサー率45% (1011/2238)
回答No.2

フォルダウィンドウ(Explorer)で、192.168.0.**\test\を アクセスできますか? できなければ、該当するIPアドレスのマシンを用意したり、 共有フォルダへのアクセス権を設定すれば解決できると思います。 ※ 以下は似たような内容のやり取りがある情報です。 http://bbs.wankuma.com/index.cgi?mode=al2&namber=14339&KLOG=30 別のユーザーに偽装することについても話がされています。 ※ 以下はASPの場合ですが、ユーザーの偽装について話し合っています。 https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/fcc52e5f-1031-400f-9611-376981bf748a/12503125251246412521125122086912391123002060535013123011237512?forum=aspnetja osがpro版やhome版ではなく、server版が必要な場合も 考えられるようですね。

関連するQ&A

  • インスタンス化について

    .NETでのインスタンス化について .NETでプログラムの勉強をしています。インスタンスについてお教えください。 ↓では、「sr」はnewキーワードを使ってインスタンス化しています。 ********************************************************************************** //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容をすべて読み込む string s = sr.ReadToEnd(); //閉じる sr.Close(); //結果を出力する Console.WriteLine(s); ↓では、「enc」はnewキーワードを使ってインスタンス化していません。 ********************************************************************************** //読み込むテキストファイル string textFile = "C:\\text.txt"; //文字コード(ここでは、Shift JIS) System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); //テキストファイルの中身をすべて読み込む string str = System.IO.File.ReadAllText(textFile, enc); //行ごとの配列として、テキストファイルの中身をすべて読み込む string[] lines = System.IO.File.ReadAllLines(textFile, enc); ********************************************************************************** 質問1: インスタンス化させる時にはnewキーワードが必要だと思っていましたが、「enc」はnewキーワードが使用されていません。 なぜでしょうか? 質問2: System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); 上記のように、newと同時にパスやエンコーディングを引数として渡しています。この事をコンストラクタとよぶのでしょうか? Googleで調べていますが、いまいち意味がわかりません・・・物凄くひらたくいうとどういったことなのでしょうか?何かプログラムではない、一般的な事で例えて頂けるとありがたいです。 宜しくお願い致します。

  • C#からテキストファイルへの出力について

    お世話になります。 .NET C#で開発をしております。 下記のコードで、テキストファイルへ書き出す際、 何故か最初の1レコード目が書き出されない現象が 起きてしまいます。 どなたかご親切な方、ご教示頂きたく宜しくお願い致します。     記 public static int Syori() { string MitxtPath = @"D:\MData"; string SotxtPath = @"D:\SData"; for (int x = 0; x < 2; x++) { if (x == 0) { FileName = "\\JF01.txt"; } else if (x == 1) { FileName = "\\JS05.txt"; } FileStream fs = new FileStream(MitxtPath + FileName, FileMode.Open); StreamReader r = new StreamReader(fs, Encoding.GetEncoding("Shift_JIS")); if (r.ReadLine() != null) { StreamWriter textFile; textFile = new StreamWriter(SotxtPath + FileName, true, Encoding.GetEncoding("Shift_JIS")); //レコードを書き込む string ZanData; string newData; byte[] bytesData; while ((OkuriNokosi = r.ReadLine()) != null) { bytesData = System.Text.Encoding.GetEncoding(932).GetBytes(ZanData); newData = System.Text.Encoding.GetEncoding(932).GetString(bytesData); textFile.WriteLine(newData); } textFile.Close(); r.Close(); } }

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • C# ファイルを読み込みlistviewに展開

    C#でtxtファイルを読み込み、listviewに展開したいのですが、txtファイルが ○○○,○○○ △△△,△△△ となっている場合、最初の一文字が消えて ○○,○○○ △△△,△△△ と表示されます。 コードは下記の通りです。 System.IO.StreamReader load = new System.IO.StreamReader(@".\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); load.Read(); String file; while ((file = load.ReadLine()) != null) { string[] txtdate = file.Split(','); itemx = new ListViewItem(); itemx.Text = txtdate[0]; itemx.SubItems.Add(txtdate[1]); listView1.Items.Add(itemx); } load.Close(); 何を直せば最初の一文字目も読み込まれるかご教授下さい。

  • 排他ロックが掛かっているファイルを読み込む

    排他ロックが掛かっている(別のプロセスが使用している) テキストファイルを読み込みたいのですが、 System.IO.FileStreamを実行した後に、IOExceptionエラーが発生し、 読み込みができません。 System.IO.FileStreamにはこだわってませんので、 排他ロックが掛かっているテキストファイルを読み込む方法を ご存知の方は、ご教授頂けませんでしょうか。 宜しくお願いします。 <ソースコード> 'ファイルパス wFullPath = "\\XXX.XXX.XXX.XXX\TEXT\TEST.TXT" (XXX.XXX.XXX.XXX:IPアドレス) 'ファイルを開く Dim fs As New System.IO.FileStream(wFullPath, _ System.IO.FileMode.Open, _ System.IO.FileAccess.ReadWrite, _ System.IO.FileShare.ReadWrite) 'FileStreamを基にしたStringReaderのインスタンスを作成 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding("shift_jis") Dim sr As New System.IO.StreamReader(fs, enc) 'ファイルの内容をすべて読み込む Dim s As String = sr.ReadToEnd() <開発環境> 言語:VB.NET Microsoft Visual Studio 2008 Microsoft .NET Framework Version 3.5 SP1

  • C#におけるファイル読み取りの文字化け

    開発初心者です。 //Shift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader(@txtShiteiFile.Text, System.Text.Encoding.GetEncoding(932)); //内容を全て読み込む string textAll = sr.ReadToEnd(); 以上の関数を使ってテキストファイル上の文字を読み取りしているのですが、 textAll 変数に入ったときに文字化けしています。 また、テキストファイルによっては文字化けしないときもあります。 この場合、どのような対処をすればよいのでしょうか?

  • C# ファイル名を指定してオープン

    StreamWriter swrite = new StreamWriter("C:\\19yamana.csv",false, System.Text.Encoding.GetEncoding("shift-jis")); のファイル名"C:\\19yamana.csv"の部分を変数にしたいのですがうまく出来ません。 やったこと: string fileName = "C:\\19yamana.csv"; StreamWriter swrite = new StreamWriter(fileName, false, System.Text.Encoding.GetEncoding("shift-jis"));

  • 実行時にファイル指定するのではなくコンパイル時に指定したい。

    import java.io.*; class test { public static void main(String args[]) { char ch[] = new char[128]; try { FileReader fp = new FileReader(args[0]); fp.read(ch); System.out.println(ch); } catch (IOException e) { System.out.println("例外 - " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(); } } } 以上プログラムについての質問です。 ファイルを読み込み配列に格納するプログラムです。 読み込みたいファイルをabc.txtとします。 ↑では実行時にjava test abc.txtと指定して テキストの中身を表示するのですが プログラム内に読み込むテキストをはじめからいれておきたいです。 この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? また文のはじめから終わりまで読み込んで全部出力してしまうのですが 例えば、1文だけ(改行まで)読み取る、ですとか 1文だけ読み取るのを上から順番ではなくてランダムに読み取る、などはどうやればよいのでしょうか? わかる方、ヒントだけでも結構です。 よろしく御願いします。

    • ベストアンサー
    • Java
  • TEXTファイルを日付・時刻で保存。

    VB2005.NETを使用しています。 System.IO.File.Create("C:\test.txt") System.IO.File.OpenText("C:\test.txt") などがありますが、このtestの部分を日付・時刻で保存したいのですが、可能ですか? 日付をstringに変更して、"C:\" & yyyymmdd & ".txt"としてもだめなようです。 書籍・インターネットを調べても解りませんでした。 よろしくお願いします。

  • C#(.Net)におけるエンコードのバグ?

    複数のテキストファイルを読み込み、置換などの処理を加えた後に、文字コードはそのままで別名保存するアプリケーションを開発しています。 しかし、Encodingクラスを使って文字コードを変換するところでつまずきました。EUC-JPとShift_JISを変換するときだけ、一定の文字列が文字化け(あるいは脱字)してしまいます。それも必ず化けるわけではないようです。 以下、簡単なチェックの手順です。 まず、下記テキストを含むテキストファイルを作成します。ファイル名は「test1.txt」、文字コードはEUC-JPとします。 ________________________ この文章は処理対象に含まれません。 この文章はダミーです。 この文章はこのファイルが正常に処理されるかどうかをチェックするために含まれています。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 次に、下記コードでテキストファイルを読み込み、別名で保存します。 string Buffer=File.ReadAllText("test1.txt",Encoding.Unicode); Encoding EncodingSrc=Encoding.GetEncoding("euc-jp"); byte[] b=Encoding.Unicode.GetBytes(Buffer); b=Encoding.Convert(EncodingSrc,Encoding.Unicode,b); Buffer=Encoding.Unicode.GetString(b); File.WriteAllText("test2.txt",Buffer,EncodingSrc); すると、「test2.txt」に脱字が発生します。 ________________________ この文章は処理対にれせん。 この文章はダーです。 この文章はこのファイルが正常に処理されるかどうかをチェックするためにれていす。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ かなり回りくどいコードですが、文字コードを取得したり、また元の文字コードに戻したりするためにこうなってしまいました。 代替策でもかまいませんので、ご教授のほど、よろしくお願いします。

専門家に質問してみよう