私は、整数を生成し、それをテキストファイルに書き込んで、プログラムが次に実行されるときにそれを読み戻すプログラムがあります。いくつかの異常な動作の後、私は整数値の設定、ファイルへの書き込み、およびデバッグのための読み戻しを行いました。ファイルに書き込まれた整数が別の値として読み取られるのはなぜですか?
totScore
は25に設定されています。ファイルに書き込む前にコンソールに印刷すると、25
の値が表示されます。しかし、ファイルを読み込んでコンソールにプリントすると、3つの値、つまり25
、13
、および10
が得られます。メモ帳でテキストファイルを見ると、キーボードにはない文字が表示されるので、ファイルがint
に格納されていると思われます。
書き込みと読み取りの手順が異なるのはなぜですか?
int
として書かれていませんか?これらの値はどのようにファイルに保存されていますか?私は、読み取り値を他のものとしてキャストし、それを整数に変換する必要がありますか?
は考えてみましょう:あなたが読んでいる
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.nio.file.*;
import java.nio.file.StandardOpenOption.*;
//
public class HedgeScore {
public static void main(String[] args) {
int totScore = 25;
OutputStream outStream = null; ///write
try {
System.out.println("totscore="+totScore);
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("hedgescore.txt")));
bw.write(totScore);
bw.write(System.getProperty("line.separator"));
bw.flush();
bw.close();
}
catch(IOException f) {
System.out.println(f.getMessage());
}
try {
InputStream input = new FileInputStream("hedgescore.txt");
int data = input.read();
while(data != -1) {
System.out.println("data being read from file :"+ data);
data = input.read();
int prevScore = data;
}
input.close();
}
catch(IOException f) {
System.out.println(f.getMessage());
}
}
}
あなたは文字I/OのAPI( 'FileWriter')を使用して書き込み、バイトI/O(' FileInputStream'を使用して読んでいます)。この問題は、この書き込みと読み取りの方法の不一致によるものです。 – dasblinkenlight