1. ホーム
  2. java

Android : ファイルをバイト単位で読み込むには?

2023-09-24 23:05:56

質問

Androidアプリケーションで、ファイルの内容をバイト単位で取得しようとしています。私はSDカードにファイルを取得し、今バイトで選択したファイルを取得したいです。私はググったが、そのような成功はありません。助けてください。

以下は、拡張子付きのファイルを取得するためのコードです。これによって、私はファイルを取得し、スピナーに表示されます。ファイル選択時に、ファイルをバイト単位で取得したいです。

private List<String> getListOfFiles(String path) {

   File files = new File(path);

   FileFilter filter = new FileFilter() {

      private final List<String> exts = Arrays.asList("jpeg", "jpg", "png", "bmp", "gif","mp3");

      public boolean accept(File pathname) {
         String ext;
         String path = pathname.getPath();
         ext = path.substring(path.lastIndexOf(".") + 1);
         return exts.contains(ext);
      }
   };

   final File [] filesFound = files.listFiles(filter);
   List<String> list = new ArrayList<String>();
   if (filesFound != null && filesFound.length > 0) {
      for (File file : filesFound) {
         list.add(file.getName());
      }
   }
   return list;
}

どのように解決するのですか?

簡単です。

File file = new File(path);
int size = (int) file.length();
byte[] bytes = new byte[size];
try {
    BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
    buf.read(bytes, 0, bytes.length);
    buf.close();
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

manifest.xmlにパーミッションを追加します。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />