0

これは、.bin ファイルを読み取るための私のコードです。名前: Testfile.bin 場所: Assets

byteRead(pathtobinfile) 関数では、bin ファイル パスを文字列として渡したいと考えています。

bin ファイルのパスを取得する方法。任意のアイデアをお願いします!!!

   public byte[] byteRead(String aInputFileName)
{

        File file = new File(aInputFileName);
        byte[] result = new byte[(int)file.length()];
        try {
          InputStream input = null;
          try {
            int totalBytesRead = 0;
            input = new BufferedInputStream(new FileInputStream(file));
            while(totalBytesRead < result.length){
              int bytesRemaining = result.length - totalBytesRead;
              //input.read() returns -1, 0, or more :
              int bytesRead = input.read(result, totalBytesRead, bytesRemaining); 
              if (bytesRead > 0){
                totalBytesRead = totalBytesRead + bytesRead;
              }
            }

          }
          finally {
            //log("Closing input stream.");
            input.close();
          }
        }
        catch (FileNotFoundException ex) {
          ex.printStackTrace();
        }
        catch (IOException ex) {

            ex.printStackTrace();
        }

        Log.d("File Length",  "Total No of bytes"+ result.length);

        return result;
} 

何か助けはありますか?

4

2 に答える 2

0

あなたの要件に従って変更した次のコードを実装します。私はそれをテストし、非常にうまく機能しています。

public byte[] byteRead(String aInputFileName) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        InputStream input = getResources().getAssets().open(aInputFileName);
        try {
            byte[] buffer = new byte[1024];
            int read;
            while ((read = input.read(buffer)) != -1) {
                baos.write(buffer, 0, read);
            }

        } finally {
            input.close();
        }
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

    Log.d("Home", "Total No of bytes : " + baos.size());

    return baos.toByteArray();
}

入力

この機能は、このように使用できます。

byte[] b = byteRead("myfile.txt");
String str = new String(b);
Log.d("Home", str);

出力

09-16 12:25:34.340: DEBUG/Home(4552): 総バイト数: 10
09-16 12:25:34.340: DEBUG/Home(4552): こんにちはチンタン

于 2013-09-16T06:51:25.687 に答える
0

Assetフォルダーから非常に読みやすいbinファイルです。

これが誰かを助けることを願っています。

    InputStream input = context.getAssets().open("Testfile.bin");
    // myData.txt can't be more than 2 gigs.
    int size = input.available();
    byte[] buffer = new byte[size];
    input.read(buffer);
    input.close();
于 2013-09-16T06:32:09.793 に答える