2016-07-28 13 views
0

Javaでファイルに書き込むために次のコードを使用していますが、テキストは正常に出力されますが、文字間には奇妙な文字があります。私は答え、すべてを探していたJavaランダムアクセスファイル奇妙な文字

public static void foo() throws IOException{ 
    static RandomAccessFile configFile; 
    configFile.writeChars("#Minecraft server properties"); 
    configFile.close(); 
} 

Image

ははwriteUTFの間違った使い方(指される)ので、私は問題を半固定され、代わりにそのしようとすることを決めたが、私はまだ先頭にその文字を持っています行の

public static void foo() throws IOException{ 
    static RandomAccessFile configFile; 
    configFile.writeUTF("#Minecraft server properties"); 
    configFile.close(); 
} 

Image

私の質問は以下のとおりです。その文字は何ですか? Vimはそれを@と表示しています。削除するにはどうすればよいですか?

+1

長さの単語です。 Javadocを参照してください。それを削除するには、 'writeUTF()'を使わないでください。 'readUTF()'を使ってそれを読むことがない限り、 'writeUTF()'は使わないでください。 – EJP

+0

'writeChars()'はUTF-16を書いています。 *なぜあなたは 'FileWriter'ではなく' RandomAccessFile'を使用していますか? – Andreas

+0

人間が読めるテキストを書いたければ、RandomAccessFileは悪い選択です。 – immibis

答えて

0

このcharは、作成しているファイルのエンコーディングと関連しています。

は、代わりに次のコードを使用してみてください:

public static void createConfigFile() throws IOException { 
    FileWriter writer = new FileWriter("PATH_TO_YOUR_CONFIG_FILE", false); 
    writer.append("#Minecraft server properties"); 
    // Append any other content you need here. 
    writer.flush(); 
    writer.close(); 
} 

役に立てば幸い!

0

私は、文字列をUnicodeシーケンスに変換し、その逆も可能なオープンソースライブラリを作成しました。あなたの問題を分析するのに役立つかもしれません。あなたのJavaコードで問題のあるファイルから文字列を読み込み、それをUnicodeシーケンスに変換するか、ファイルに書き込む前に文字列を変換してください。ここでは、ライブラリの入手方法と使用方法を説明する記事へのリンクを示します。 (これは非常に簡単です)。 Open Source Java library with stack trace filtering, Silent String parsing Unicode converter and Version comparison。段落を参照してください。文字列Unicodeコンバータ

+0

自分のコンテンツを別のサイトにリンクするとき、あなたは[スパマー](http://stackoverflow.com/help/promotion)になりたくはありません。あなたはここに大部分のコンテンツを含めるべきであり、そのリンクは参考としてのみ使用してください。そして、あなた自身のコンテンツであることに間違いなく注意してください。 –

+0

@Paulありがとう、私はそれが私の図書館であることを明確にするために答えを編集しました。内容に関しては、私はその記事をしばらくの間作っていました。この場合、記事からコピー/ペーストするだけです。だからこの特定のケースでは、私はそれをそのまま残す。しかし、私は間違いなくあなたのアドバイスを取って、それに応じて養殖場で書く –