簡體   English   中英

Android Emulator中的問題編寫文件問題

[英]Problem Writing Files problem in Android Emulator

我正在嘗試使用以下代碼將一些簡單數據寫入外部存儲。 我在這里遺漏了一些東西,但不確定是什么。 謝謝

RobD

public class TimeCard extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Button button = (Button) findViewById(R.id.Button01);
        final EditText edittext = (EditText) findViewById(R.id.EditText01);
        final EditText edittext1 = (EditText)findViewById(R.id.EditText02);
        final EditText edittext2 = (EditText)findViewById(R.id.EditText03);
        final EditText edittext3 = (EditText)findViewById(R.id.EditText04);
        final String inputString = edittext + "/n" + edittext1 + "/n"+  edittext2 + "/n" + edittext3;
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {               
              //Do it
              CreateFile(inputString);
              //Let them know it
              Toast.makeText(TimeCard.this, "You are Clocked In", Toast.LENGTH_LONG).show();
            }


        });
    }
    //Write to SD Card
 public void CreateFile(String InputString){        

     File SDCard = Environment.getExternalStorageDirectory();  
     String FILENAME = SDCard + "/time_card.txt";

        FileOutputStream fos = null;
        try {
            fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }
        try {
            fos.write(InputString.getBytes());
        } catch (IOException e) {

            e.printStackTrace();
        }
        try {
            fos.close();
        } catch (IOException e) {

            e.printStackTrace();
        }
        }
   }

我嘗試運行您的代碼,錯誤是由您使用openFileOutput(String name, int mode)方法引起的。 在LogCat里面,我可以看到以下異常:

java.lang.IllegalArgumentException: File /mnt/sdcard/time_card.txt contains a path separator

這使我指出了這個問題的答案方向,這也可能解決你的問題:

Context.openFileOutput用於創建應用程序專用的文件。 它們會進入您應用的私人數據目錄。 您提供名稱,而不是路徑

openFileOutput文檔也指出了這個函數的name參數:

要打開的文件的名稱; 不能包含路徑分隔符。

對於將來的參考,當您遇到這樣的問題時,了解如何使用可用的工具(如LogCat)絕對至關重要。 沒有他們,你將很難搞清楚什么是錯的。 所以我建議你閱讀一下如何做到這一點。

當你沒有顯示你得到什么樣的錯誤信息時,很難說清楚。 但我的第一個猜測是您忘記在AndroidManifest.xml文件中包含WRITE_EXTERNAL_STORAGE權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM