0

byte []この形式の文字列を保持する がある場合:

abcd 546546545 dfdsfdsfd 5415645

数値が整数型であることはわかっています。byte[]メソッドを使用せずに生を取得する最良の方法は何String.split()ですか?

4

1 に答える 1

1

この回答は、次の仮定に基づいています (投稿した内容から明確に保証されているものはありません)。

  • 現在、ファイルから直接バイトを読み取っています
  • ファイルは VM のデフォルトのエンコードで保存されます
  • 10 進数でないものはすべて無視したい
  • byte[]各バイトにファイル内の 10 進数に対応する数値が含まれるを生成したい

これらの仮定を使用して、この問題を次のように解決します。

public byte[] getDigitValues(String file) throws IOException {
    FileReader rdr = new FileReader(file);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        rdr = new BufferedReader(rdr);
        for (char c = rdr.read(); c != -1; c = rdr.read()) {
            if (c >= '0' && c <= '9') {
                bos.write(c - '0');
            }
        }
    } finally {
        if (rdr != null) {
            try { rdr.close(); }
            catch (IOException e) {
                throw new IOException("Could not close file", e);
            }
        }
    }
    return bos.toByteArray();
}

Java 7 では、try-with-resources ステートメントを使用します。

public byte[] getDigitValues(String file) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try (Reader rdr = new BufferedReader(new FileReader(file))) {
        for (. . .
    }
    return bos.toByteArray();
}
于 2012-11-04T15:27:49.157 に答える