2017-09-09 1 views
-4

これは私が使用しているコードです。実行して出力ファイルを開くと、Hello worldが保存されています。出力がバイトコードで表示されないのはなぜですか? FileOutputStreamを使用し、.getBytesメソッドを使用する場合

なぜこのようなのですか?

public class Fileoutputstream { 
    public static void main(String [] args) throws IOException { 
     File file = null; 
     FileOutputStream fileOut = null; 

     try { 

      file = new File("output"); 
      if (!file.exists()) {         
       file.createNewFile(); 
      }         

      fileOut = new FileOutputStream(file, true); 

      String textToSave = "Hello World"; 
      byte[] textToSaveBytes = textToSave.getBytes(); 
      fileOut.write(textToSaveBytes); 

      fileOut.close(); 
     } catch (Exception e) { 

     } 
    } 
} 
+2

何を尋ねようとしていますか? – UmarZaii

+0

バイト数とファイルストレージの仕組みに関する根本的な誤解があるようです。すべてのタイプのすべてのファイルは一連のバイトです。これらのバイトの解釈方法を決定するのは、テキストエディタのようなアプリケーションの責任です。 – VGR

+0

私はバイトストリームと文字ストリームについて学びました。バイトストリームの下にあるfileoutputstreamを実行すると、結果はマシンコード – KingOfDaNorf

答えて

0

ファイルに書き込んだバイトは実際はASCIIコード文字列なので、出力ファイルはテキストファイルであることは間違いありません。 ほとんどのプログラムでは、ファイルにテキスト以外の文字(NULLバイト、制御文字など)がない場合、ファイルを「テキスト」として扱います。

+0

getBytesがASCIIコードを返すようになりました。 – KingOfDaNorf

+1

'getBytes'を呼び出す文字列にASCII文字が含まれていれば、それはバイト単位でASCIIを返します。文字列にUTF文字が含まれている場合、それらの文字のバイトが返されます。 – dunni

+1

_ "getBytesがASCIIコード" _ - noを返しているので、ソース文字列のUTF-16値を取得し、プラットフォームのデフォルト文字セットの_encoding_をUSING ISO-8859-1これはASCIIの_superset_です。ターゲットの文字セットに存在しないUTF-16文字は、「デフォルトの置換」文字に変更されます。 –

関連する問題