2017-02-24 5 views
1

私は2つのJavaクラスを持っています。 クラスAクラスBとしましょう。ファイル内容をバイトとして読み取るjava

クラスAは、ユーザから文字列入力を取得し、ファイルにバイトとして、クラスBは、ファイルを読み取り、文字列、バイトを表示すべき入力を記憶します。

クラスA:クラスBでは

File file = new File("C:\\FILE.txt"); 

file.createNewFile(); 

FileOutputStream fos = new FileOutputStream(file); 
String fwrite = user_input_1+"\n"+user_input_2; 
fos.write(fwrite.getBytes()); 
fos.flush(); 
fos.close(); 

、私は、ファイルを読むためにコードを書いたが、私はバイトとしてファイルの内容を読み込む方法がわかりません。

クラスB:

fr = new FileReader(file); 
br = new BufferedReader(fr); 
arr = new ArrayList<String>(); 
int i = 0; 

while((getF = br.readLine()) != null){ 
    arr.add(getF); 
} 
String[] sarr = (String[]) arr.toArray(new String[0]); 

FILE.TXTは、次の行に

を持っている[3ce76a1

@ B [B 36245605

@私はこれらの行の両方を変換したいですそれぞれの文字列値に変換して表示します。どうやってするの?

答えて

1

データを保存するためにString byte[]表現を使用して保存する必要がありますか?オブジェクトの直列化(Object Serialization Tutorial)を見てみると、行ごとの低レベルの読み書きメソッドについて心配する必要はありません。

1

あなたがたFileOutputStreamてバイト配列を作成しているので、逆の操作は、FileInputStreamをを使用してファイルを読み込み、バイト配列から文字列を構築するために、次のようになります。

File file = new File("C:\\FILE.txt"); 
Long fileLength = file.length(); 
byte[] bytes = new byte[fileLength.intValue()] 
try (FileInputStream fis = new FileInputStream(file)) { 
    fis.read(bytes); 
} 
String result = new String(bytes); 

はしかし、より良い方法がありますStringをファイルに書き込む。

FileWriterを使用して書き込み、FileReader(対応するBufferedReader/Writerでラップする可能性があります)を読み込むと、中間バイト配列が作成されなくなります。あるいは、Apache CommonsのIOUtilsやGoogleのGuavaライブラリを使用する方がよいでしょう。

関連する問題