• ベストアンサー

Double,Longをファイルに書き込み

以下のように、Double,Longをファイルに書き込もうとした場合、どのようにキャストをすればよろしいのでしょうか? (String)でString型への変換や Integer.parseInt等を試したのですが、できませんでした。よろしくお願いします。 import java.io.*; class test { public static void main(String[] args) { double dNumber = 3.45; long lNumber = 12345; BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt")); bw.write(dNumber); bw.write(lNumber); } //end main } //end class

  • fuyu
  • お礼率69% (145/210)
  • Java
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

予約されてるらしいので、もう一度お邪魔します :-) ぱっと思い付くのは二つ。ネイティブな型を使うのであれば、こんな感じで。 double dNumber = 3.45; bw.write("" + dNumber); クラスを使うんであれば、toString() メソッドを使う。 Double dNumber = new Double(3.45); bw.write(dNumber.toString());   *  *  * ファイル名が .txt だから、テキストでの出力で良いのだと思うけど、 蛇足を少々。 ・このままのソースだと、数字がくっついちゃう ・BufferedWriter の close() をするように

fuyu
質問者

お礼

二回連続で回答していただきありがとうございます。 おかげさまで今回のプログラムは無事にコンパイルでき、ロジックエラーが少々あったものの、それを修正して無事に動くようになりました。 今回はありがとうございました。

その他の回答 (2)

  • akr
  • ベストアンサー率18% (32/173)
回答No.3

書きこむだけであれば、DoubleクラスやLongクラスのtoStringメソッドで、文字列の変換して書きこむってことも出来ますが、これでは桁数が解らなくなるのでセパレータを入れる等の細工が必要ですね。 あとは、RandomAccessFileクラスを使う方法もあります。 このクラスはwriteDoubleや、writeLongといった書き込みメソッドがあります。また、readDoubleや、readLongと言った読み出しメソッドもあります。

fuyu
質問者

お礼

回答ありがとうございます。 ご紹介いただいたRandomAccessFileクラスは多分今まで使ったことがないと思うので、APIで少し見てみたいと思います。

  • arata
  • ベストアンサー率49% (139/279)
回答No.1

各クラスのtoString()を使えばOKですよ。 Double dNumber1 = new Double( 3.45 ); Long lNumber1 = new Long( 12345 ); System.out.println( dNumber1.toString() ); System.out.println( lNumber1.toString() ); double dNumber2 = 3.45; long lNumber2 = 12345; System.out.println( Double.toString( dNumber2 ) ); System.out.println( Long.toString( lNumber2 ) ); 前者は、最初からオブジェクトとして書いた場合、後者は、原始型を使用していますが、DoubleクラスのクラスメソッドtoString()を使って変換しています。

fuyu
質問者

お礼

おかげさまで解決いたしました。回答ありがとうございました。

関連するQ&A

  • Javaのプログラムについて教えてください!

    BufferedWriterを使ってコマンドプロンプトから文字を入力して実行時に与えたパスのテキストに書き込んでいくプログラムをコーディングしてみたのですがなかなか上手くいきません。添削をお願いします。 import java.io.*; class BW{ public static void main(String[] args){ try{ File fl = new File("args[0]"); FileWriter fw = new FileWriter(fl); BufferedWriter bw = new BufferedWriter(fw); for(int i = 0;args[i]==null;i++){ bw.write(args[i]); bw.newLine(); } bw.flush(); bw.close(); }catch(IOException e){ e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • Java・ファイルへの書き込み

    はじめまして。 下記のプログラムで、以下の3つがどのような関係なのかがわかりません。 ("test1.txt")とnew FileWriterの関係 (new FileWriter("test1.txt")とnew BufferedWriterの関係 (new BufferedWriter(new FileWriter("test1.txt")と new PrintWriterの関係 どうかご教示いただきたく、よろしくお願い致します。 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Sample7 { public static void main(String[] args){ PrintWriter pw = null; try{ pw = new PrintWriter (new BufferedWriter(new FileWriter("test1.txt"))); pw.println("Hello!"); pw.println("GoodBye"); System.out.println("ファイルに書き込みました。"); }catch(IOException e){ System.out.println("入出力エラーです。"); }finally{ if(pw != null){ pw.close(); } } } }

    • ベストアンサー
    • Java
  • Writer & PrintWriter

    import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(w); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } と import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { //Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(args[0]); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } の結果が同じになるんですけど、 Writer w = new FileWriter(args[0]); PrintWriter pw = new PrintWriter(w); とするのはなぜなんですか? 何か意味はあるんですか?

  • 文字化けをなおしたいです。

    下記のようなプログラムで、文字をテキストに出力しているのですが、文字化けしてしまう文字があります。 どのように対処すればよろしいのか教えていただけないでしょうか。(ソース中の(文字化けのする文字)には、例えば、はしごたかの高などです。) OSはhp-uxです。 ======== class test { public static void main(String args[]) { try { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt",true), "Shift_JIS")); String msg=""; msg="(文字化けのする文字)"; bw.write(msg); bw.flush(); bw.close(); } catch (IOException e) { System.err.println(e); } } }

    • ベストアンサー
    • Java
  • 超基本的な質問?ファイルの変数

    すごく基本的な質問だと思うのですが、 FileWriter 変数をクラスのメンバとしては持てないのでしょうか? たとえば、下のように書くとエラーが出るのですが、何がまずいのでしょうか? import java.io.FileWriter; public class FileTest {   FileWriter fw;   public static void main(String[] args) {     try {       fw = new FileWriter("test.txt");       fw.close();     } catch (Exception e) {     System.out.println("Exception: " + e);     }   } }

    • ベストアンサー
    • Java
  • javaプログラム初心者です。

    入力ファイルの内容をWebサーバプログラムへ送信し、サーバからの応答を別ファイルに出力するクライアントプログラムを作っているのですが、出力ファイルにはなにも書き込みがされていません。(サーバからの応答は事前に不明でその長さが可変長である) 以下が作ったプログラムです。間違っているところを詳しくご指摘いただけるとありがたいです。お願いします。 import java.net.*; import java.io.*; public class client{ static final int BUFSIZE = 1792; public static void main(String[] args){ try{ String server = args[0]; //接続先のIPアドレス File file1 = new File(args[1]); //入力ファイル(HTTPリクエスト) FileReader filereader = new FileReader(file1); BufferedReader br = new BufferedReader(filereader); int serverport = Integer.parseInt(args[2]); //ポート番号 File file2 = new File(args[3]); //サーバからの応答をファイルに書き込む用 FileWriter filewriter = new FileWriter(file2); BufferedWriter bw = new BufferedWriter(filewriter); byte[] bytebuffer = new byte[BUFSIZE]; String str; while((str = br.readLine()) != null){ //入力ファイルの内容を1行ずつ読み込む bytebuffer = str.getBytes(); //入力ファイルの文字列をバイトに変換 } Socket socket = new Socket(server,serverport); //ソケットの生成 System.out.println("Connected to server...sending echo string"); InputStream in = socket.getInputStream(); //入出力ストリームの取得 OutputStream out = socket.getOutputStream(); out.write(bytebuffer); //文字列を送信 int receive; while((receive = in.read(bytebuffer))!=-1){ bw.write(new String(bytebuffer)); //サーバからの応答をファイルに出力 } bw.close(); socket.close(); }catch(IOException e){ } } }

  • HashSetのデータをファイルにしたい

    HashSetのデータをファイル化したいのですが、どのようにすればよいでしょうか?以下のコードで画面出力は出来るのですが、BufferedWriterのwriteメソッドでファイルに追記したくてもそれぞれの文字列の長さはデータ毎にサイズが異なるためwrite(String s, int off, int len) が使えそうにありません。どうすればファイル化出来るでしょうか?もしくは、HashSetにこだわるつもりはないので、HashSet以外で、一意性を保証するコレクションクラスがあればそちらの書き方でも構いません。 public class TestHash { public static void main(String[] args) throws Exception { HashSet hs = new HashSet(); hs.add("aiueo"); hs.add("kakikukeko"); hs.add("sashisuseso"); Iterator it = hs.iterator(); FileWriter writer = new FileWriter("/home/taro/aaa.txt"); BufferedWriter bwriter = new BufferedWriter(writer); while(it.hasNext()) { System.out.println(it.next()); //画面出力はこれでOK bwriter.write(it.next()); //これはNG } bwriter.close(); } }

    • ベストアンサー
    • Java
  • 初心者です。splitメソッドで、NoSuchMethodErrorが出ます。

    こんにちは。 Javaの初心者です。 csvファイルから1行ずつ読み込み、それをsplitで配列に入れて 特定の文字を出力する、といったことをしたいと思っています。 ソースは以下のとおりです。 import java.lang.*; import java.io.*; public class TestJava { public static void main(String[] args) { try { BufferedReader br = new BufferedReader (new FileReader("in.csv")); BufferedWriter bw = new BufferedWriter(new FileWriter("out.csv")); String line = null; while ((line = br.readLine()) != null) { String[] inArray = line.split(","); String s = inArray[0].substring(2, 3); System.out.println (s); bw.write(line); bw.newLine(); } bw.flush(); br.close(); bw.close(); } catch (IOException e) { e.printStackTrace (); System.exit(-1); } } } コンパイルは通るのですが、実行すると、 C:\java\src>java TestJava Exception in thread "main" java.lang.NoSuchMethodError at TestJava.main(TestJava.java:19) というエラーが出てしまいます。 (19行目は、String[] inArray = line.split(",");の部分です) ネットで調べてみると、mainメソッドの書き方が間違っているのでは、 とあったので、何度も注意深く見てみたのですが mainメソッドに間違いはないように思えます。 また、クラスパスが通ってないのでは、ともあったのですが、 環境変数のclasspathに「C:\java\src」を設定しています。 どなたか分かる方いらっしゃいましたら、 ご教授いただけませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • javaプログラミングでの文字化けの対処方法

    javaのソースを作成していて、 BufferedWriter bw = new BufferedWriter(new FileWriter(args[1])); のようにし、ファイル出力ストリームを取得しarg[1](テキストファイル)に bw.write(num); のようにしてint型の変数をファイルに書き込むようにしましたが、 できあがったテキストファイルを開いてみると文字化けしていました。 これを文字化けさせずにファイルに書き込む方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • キーボード入力データを外部ファイルに書き込む

    2つのTextFieldに入力された単語を「A, B」というように、間にデリミタを挟んだ形でFileWriterを用いて外部txtファイルに格納するプログラムを作っています FileWriter単体では class filewrite { public static void main(String[] args){ try{ FileWriter fw = new FileWriter("D:/java/javatango.txt", true); fw.write("一 , one"); fw.close(); } catch (IOException e){ System.out.println(e); } } } で実行できるのですが、この「一」「one」を別々のTextFieldにキーボードから入力されたデータにしたいのですが、その場合はどのようにすれば良いでしょうか

    • ベストアンサー
    • Java