2017-02-01 12 views
0

Mac/Windows用のアプリを作った。これらのOSでは、JFileChooserを使用して自分のコンピュータからファイルを選択できます。しかし、私はアンドロイド用の私のアプリのモバイル版を作るつもりです。ここに挙げた機能のコードはデスクトップOS用です:Android:選択したファイルを読み込んで文字列を返す関数

public static String readFile() { 
    JFileChooser fc; 
    File file; 
    fc = new JFileChooser(defaultPath); 
    if (fc.showOpenDialog(new JFrame()) == JFileChooser.APPROVE_OPTION) { 
     file = fc.getSelectedFile(); 
    } else { 
     return null; 
    } 
    try { 
     Scanner reader = new Scanner(file); 
     content = reader.useDelimiter("\\A").next(); 
    } catch (IOException e) { 
     System.exit(0); 
    } 
    return content; 
} 

私の質問は次のとおりです。Androidで動作させるにはどうすればいいですか?

+0

'JFileChooser'は、Android上で存在し、以来、ブロッキングしないためにはAndroid上にUI(例えば 'showOpenDialog()')は存在せず、あなたのUI作業(メインアプリケーションスレッド上)とディスクI/O(バックグラウンドスレッド上)を分離する必要があるので、単一の「機能」ではなく、ここにあるようには見えません。 – CommonsWare

+0

ファイルチューザを使用せずに、Android上でファイルを読む簡単な方法はありますか? –

+0

その部分は 'try' /' catch'ブロックにあるものと変わりありませんが、 'Scanner'を使う以外にJavaでコンテンツを読む方法は他にもありますが、そのI/O作業をする必要があります(I/Oが進行している間はUIをフリーズしません)。 – CommonsWare

答えて

0

コメントに記載されているとおり、1つの機能ですべてを行うことはできません。 ここには、ユーザーがファイルを選択できるライブラリの1つがあります。 https://github.com/iPaulPro/aFileChooser 他にも多数あります。 ファイルのパスを持っていたら、あなたはこのスニペット(または、あなたのニーズに適応することができ似たような)で、たとえばそれを読むことができますに

String mResponse; 
    File file = new File(*path*, *name*); 
    try { 
     FileInputStream is = new FileInputStream(file); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     mResponse = new String(buffer); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return false; 
    } 
関連する問題