[英]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.