• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.NETで文字列のエンコードの仕方+ファイル操作)

.NETで文字列のエンコードの仕方とファイル操作

このQ&Aのポイント
  • .NETで文字列のエンコードの仕方とファイル操作について知りたいです。また、ホームページを探しています。
  • 指定したファイルに文字列を追加する方法についてわかりません。StreamWriterを使用する際の文字エンコード方法についても教えてください。
  • ファイル操作や文字列のエンコードに関する情報をまとめたホームページを探しています。

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

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

/* * Created by SharpDevelop. * User: Administrator * Date: 2008/07/18 * Time: 1:36 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ namespace Q4184984A { class Program { public static void Main(string[] args) { string filename = "test.txt"; string data = "美味ソ溝"; /* FileStream経由しなくて良ければこんな面倒くさい手は取らない。(StreamWriterのコンストラクタでAppendが指定できる。) */ /* 面倒くさいからファイルがなかったときとかの例外処理は省略 詳しいサイトも知らん。 */ System.IO.FileStream fs = System.IO.File.Open(filename,System.IO.FileMode.Append); /* OpenWriteだとappend出来ない */ System.IO.StreamWriter sw = new System.IO.StreamWriter(fs,System.Text.Encoding.GetEncoding(51932)); /* 書き込むたびに文字符号化方式を指定することは出来ない模様 */ sw.AutoFlush = false; sw.Write(data); sw.Flush(); sw.Close(); fs.Close(); } } }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB2008 txtファイル保存

    こんにちは、Vb2008を勉強しています。 デスクトップに保存している、TXTファイルに、 フォームで入力したデータを追加保存したいと思い、ネットで調べたり…で 入力しましたが、txtファイルを開いてみると文字化けしてしまします。 Dim writer As System.IO.FileStream = _ System.IO.File.OpenWrite("C:\Users\Desktop\顧客管理.txt") 'SystemWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(writer) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine(TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text) 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() writer.Close() 上記の方法で文字化けだったので、またまた、調べて入力しましたが 今度は、改行されず…単純な、データの追加のようになってしまっています。 私は、新しい行に追加できるようにしたいです。 下のコードは文字コードの指定をしたので、保存はできますが、 改行されません。 Dim FileName As String = "C:\Users\Desktop\確認.txt" Dim Writer As IO.StreamWriter Dim Encode As System.Text.Encoding '文字コードにShiftJISを指定。 Encode = System.Text.Encoding.GetEncoding("Shift-JIS") '既に存在するテキストに追加する場合は第2引数をTrueにする。 Writer = New IO.StreamWriter(FileName, True, Encode) Writer.Write(TextBox1.Text & "," & TextBox2.Text) Writer.Close() どなたか、教えていただけませんでしょうか?

  • 重複データを書き込まないようにするには?(VB)

    VB(2010)初心者です。 ボタンクリックで、テキストボックスに入力したデータをテキストファイルに 追加書き込みしていますが、同じデータは書き込めないようにしたいです。 下記コードにどのような記述を付け加えたら良いのでしょうか。 Dim fsFile As System.IO.FileStream = System.IO.File.OpenWrite("C:\List.txt") Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fsFile) sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) sw.WriteLine(TextBox1.Text) sw.Flush() sw.Close() fsFile.Close()

  • VB2005で、ファイル操作 VB6から触っていないので感覚がいまいち。

    VB2005で、ファイルを読み込み2行目から10行までを別ファイルに吐き出すコードがわからないのですが、 わかる方教えていただますか? 途中まではできたのですが、後がわかりません。 よろしくお願いいたします。 また、VB2005でわかりやすい書籍など紹介していただけましたら助かります。 'ファイルを開く Dim fs As New System.IO.FileStream(fileName, _ System.IO.FileMode.Open, System.IO.FileAccess.Read) 'ファイルを読み込むバイト型配列を作成する Dim bs(fs.Length - 1) As Byte 'ファイルの内容をすべて読み込む fs.Read(bs, 0, bs.Length) '閉じる fs.Close() ....[改行をLFとした場合に2行から10行目の内容を別のファイルに書き出すコード]

  • VB.NET テキストファイルにデータを書き込み

    テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとします。 このテキストファイルに「あいうえお」を先頭に追加で書き込みたいのですが、どうすればいいのでしょうか? あくまで「かきくけこ」を変数化せずファイルに直接、書き込む方法がある場合、教えてください。 'テキストファイルを開いたときの内容 あいうえお かきくけこ ちなみにですが、テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとして、 末尾に「さしすせそ」を追加で書込みする方法は下記の通りでした。 'ファイルを書き込み用に開く、指定したファイルがない場合は作成する dim fsFile As System.IO.FileStream = _ System.IO.File.OpenWrite("c:\test.txt") 'StreamWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = _ New System.IO.StreamWriter(fsFile) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine("さしすせそ") 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() fsFile.Close() 'テキストファイルを開いたときの内容 かきくけこ さしすせそ

  • VB2005でのファイル操作について

        Dim filedata As String Dim fileNum As Integer Dim fileName As String Dim i As Integer fileName = "C:\Paradata.txt" fileNum = FreeFile() FileOpen(fileNum, fileName, OpenMode.Output) For i = 0 To 9 filedata = data(i, 0) & "," & data(i, 1)・・・・・ PrintLine(fileNum, filedata) Next FileClose あるボタンを押しますと上記のようにテキストファイルにデータを保存しようとしているのですが、1回目のボタンクリックではエラーが無いのですが2回目以降は"別のプロセスで使用されているため、プロセスはファイル 'C:\Paradata.txt' にアクセスできません。"のエラーが発生してしまいます。いろいろと調べているのですがまだわからないのでどこがおかしいか教えてください。よろしくお願い致します。

  • vb2008より、ファイル読み込み書き込みの際に発生する文字化けについて

     初めて投稿させて頂くkuro_sanと申します。どうぞよろしくお願いします。  現在visual basic 2008を用いてプログラムを作成しているのですが、データの読み込み、書き込みを行う箇所で問題が発生したために、行き詰まっております。  コードを以下に示させて頂きます。 [書き込み処理関数] Private Sub WriteLog(ByVal FileName As String) 'File Open Dim Writer As New IO.StreamWriter(FileName, True) '書き込み処理 For i As Integer = 0 To i Writer.WriteLine(Table(0, i) & "," & Table(1, i) & "," & Table(2, i)) Next Writer.Close() End Sub [読み込み処理関数] Private Sub Readlog(ByVal FileName As String) Dim Reader As New IO.StreamReader(FileName, System.Text.Encoding.GetEncoding("Shift-JIS")) Dim Items() As String = New String() {} Dim Line As String = Reader.ReadLine 'CSVの一行 'データの読み込み i = 0 Do Until IsNothing(Line) Items = Line.Split(",") i += 1 Table(0, i) = Items(0).ToString Table(1, i) = Items(1).ToString Table(2, i) = Val(Items(2)) Line = Reader.ReadLine Loop End Sub です。  書き込みはtext形式の物に行っています。Table配列には(0,i),(1,i)にはString型の文字が、(2,i)には数字が入力されています。 入力、出力は行うことが出来るのですが、(0,i),(1,i)にひらがな、カタカナ、漢字などの文字が使われていると、読み込みを行った際に文字化けして格納されてしまいます。 (例:くろ,kuro,1 → 縺上m,kuro,1)  出力されたtextの中では文字化けが起こっていませんが、形式を直接csvに変換したり、読み込みを行った際に文字化けが発生している事から、書き込み時に問題があるのではないか、と思い調べているのですが、原因を判明できていません。 文字化けを発生させずに読み込み、書き込み処理を行う方法をご存知である方がいらっしゃればご教授頂けますと幸いです。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • VB.NET初心者です。ファイルの入出力について困っています

    初心者です。複数のExcelファイルを読み込んで、編集してテキストファイルに出力したいのですが、 1ファイル読み込みにつき、1行出力したいのですが、取得した列の数分出力してしまい困って います。どなたか教えてください。よろしくお願いします。 一部略 'フォルダ内のファイルの数だけループさせる For i = 0 To int_fs_CNT - 1 Dim stFileName As String = System.IO.Path.GetFileName(fs(i)) ec_Book = ec_appli.Workbooks.Open(fs(i)) ec_appli.Visible = False Dim xlSheets As Excel.Sheets = ec_Book.Worksheets Dim ec_Sheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet) 'データ取得 'ファイル名一部(一意) rng1 = CType(ec_Sheet.Cells(2, 1), Excel.Range) sCellVal1 = CStr(rng1.Value) If stFileName.StartsWith("Private_info") Then If stFileName.Contains(sCellVal1) Then 'テーブル名取得(1ファイル内で1セル取得) rng2 = CType(ec_Sheet.Cells(4, 1), Excel.Range) sCellVal2 = CStr(rng2.Value) & "," '列名など取ってくる Dim celCNT As Integer For celCNT = 8 To 57 '1ファイル読み込み確認用フラグ i_flag = 0 '列名(1ファイル内で複数のセル範囲取得) rng3 = CType(ec_Sheet.Cells(celCNT, 1), Excel.Range) '列名が空白になったらループをぬける If CStr(rng3.Value) = "" Then Exit For End If sCellVal3 = CStr(rng3.Value) & "," '-------------出力処理--------------- Dim sw As StreamWriter sw = New StreamWriter("C:\sample_CTB\table_sample\TEST.txt", True, System.Text.Encoding.GetEncoding(932)) '読み込み終了フラグ i_flag = 1 'フラグが1のとき書き込み開始 If i_flag = 1 Then '配列を使おうと考えたのですが、取得した列の数(1ファイル分)がうまく取れません 'lengthをしていすると、自分では10列とれたらlength = 10 ?(vbは0からじゃない?)となる と考えていたのですが、length = 2となっており、出力すると10行分出力されてしまいます。 Dim stArrayData1 As String() = sCellVal1.Split(","c) 'EXCELファイル名 Dim stArrayData2 As String() = sCellVal2.Split(","c) 'テーブル名(1データ) Dim stArrayData3 As String() = sCellVal3.Split(","c) '列名(複数取得:数はファイルによって違う ' ' '列の数分だけ列名を@COL1..2.3...とを増やしたいのですが、どうしたらよいでしょうか? '/////////// 'SQL文作成 Dim sqlX As String = "SELECT " & "@COL1" & "," & "@COL2" & "FROM" & "@TBNAME" '↑のようなselect文を作成して、配列に格納した値でreplaceして、一行のみ出力したいのですが、 '配列の使い方とループで混乱してしまい困っています。 '1つのExcelファイルにつき、一行を出力 sw.WriteLine(sqlX) sw.Close() End If Next Else Exit For End If End If Next

  • 文字列操作

    VB6です。 質問させてください。 ↓例、Buffer変数に取得データが入ります 最終的に下記の3つの値を取得したいです。 Value(1) = "ABC" Value(2) = "DEFGHIJKL" Value(3) = "MN" 少し長いと思います。スマートな方法はございますか? ----- Dim Buffer As String Dim Temp1 As String Dim Temp2 As String Dim Value() As String Buffer = "?ABC-?DEFGHIJKLMN-" '取得データ '前後?-を除きます。 Temp1 = Right(Temp1, Len(Buffer)-1) Temp1 = Left(Temp1, Len(Temp1)-1) 'この時点で、4文字目、5文字目の-?を除きます Temp1 = Left(Temp1, 3) Temp2 = Right(Temp1, 11) '"ABCDEFGHIJKLMN"を取得 Value = Temp1 & Temp2 '"ABC"を取得 Value(1) = Left(Value, 3) '"DEFGHIJKL"を取得 Value(2) = Right(Value(2), Len(Value)-3) Value(2) = Left(Value(2), Len(Value)-2) '"MN"を取得 Value(3) = Right(Value, 2)

  • vb2008で文字列から文字列コードを取得する方法

    サイトHTMLをWebBrowserを使用せずに取得するために、 Dim stream As System.IO.Stream = client.OpenRead(tbItemURL.Text) Dim reader As New System.IO.StreamReader(stream) Dim strHtml = reader.ReadToEnd() reader.Close() stream.Close() のような形で文字列を取得しています。 しかし、この場合Sift-jis等の場合、後の作業(一部データ取得)で文字化けに悩まされます。 http://dobon.net/vb/dotnet/string/detectcode.html 上記サイトで「バイト配列」に格納して判別する方法があります。 そこで、文字列をバイト配列に格納しようとしますが…。 文字列→バイト配列には文字コードが必要となります。 Dim data() As Byte = Encoding.UTF8.GetBytes(text) なんだか鶏と卵のような感じになってしまいます。 文字列から文字コードを判別する方法はないでしょうか? よろしくお願いします。

このQ&Aのポイント
  • テニスという競技の難しさから、プロと一般競技者の差が激しいと感じる中年女子の疑問。
  • おばさんプレイヤーのテニスについて、打ち方やラリーの質に不満を持ちながらも、彼女たちの根性や努力を評価する人もいる。
  • 自分のレベルや状況を受け入れずにモチベーションを保つ方法を模索中の中年女子。
回答を見る

専門家に質問してみよう