0

これは達成するのが非常に難しいタスクではないと考えており、HTC Desire で管理しましたが、何らかの理由で Android アプリケーションで Samsung Galaxy S SD カードから読み取ることができません。

私が使う :

public String writeFile1(String text) {

    File sdDir = Environment.getExternalStorageDirectory(); 

    File myFile = new File(sdDir+"/TextFiles/patientDetails.txt");
    try{
        myFile.createNewFile();
        FileOutputStream fOut = new FileOutputStream(myFile);
        OutputStreamWriter myOutWriter = 
                                new OutputStreamWriter(fOut);
        myOutWriter.write(text);
        myOutWriter.close();
        fOut.close();
        return "success";
    }catch (IOException e){
        e.printStackTrace();
        return "fail";
    }
}

これはうまくいきます!ファイルの内容が保存され、とても満足しています。ただし、を使用して逆を行うと...

//
               File f = new File(Environment.getExternalStorageDirectory()+fileName);

           FileInputStream fileIS = new FileInputStream(f);

           BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));

           String readString = new String(); 

           //just reading each line and pass it on the debugger
           String s = "";
           while((readString = buf.readLine())!= null){
               s+=readString;   
           }
           return s;

        } catch (FileNotFoundException e) {

           e.printStackTrace();

        } catch (IOException e){

           e.printStackTrace();
        }

ファイルが見つからないという例外が発生しました。書き込んだばかりで、SD カードをマウントすると、書き込んだ内容を確認できます。

誰かがこれに対する解決策を知っていますか? ありがとう

4

2 に答える 2

0

使用すべき間違ったコンストラクターを使用しています

File f = new File(Environment.getExternalStorageDirectory(), "filename");

それ以外の

 File f = new File(Environment.getExternalStorageDirectory()+fileName);

これで、コードは正常に動作します。

于 2011-10-10T11:03:44.620 に答える
0

このようにファイルオブジェクトを初期化するとどうなりますか

Environment.getExternalStorageDirectory()+fileName

これで最初に何が起こるか、このようにパスを取得します

/sdcard

ファイル名と連結すると、この方法で結果が得られます

filename = "test.txt";

path > /sdcardtext.txt

このファイルが見つからなかったことを確認してください。ファイル オブジェクトの完全なパスを確認してください。

次にこのように使用できるもの

File f = new File(Environment.getExternalStorageDirectory(), "filename");
于 2011-10-10T11:08:42.127 に答える