我正在使用HTC Desire 610進行Android開發。我按照其他問題的例子回答了相同的問題,但我所有的文件都保存在內部設備存儲器中,而不是SD卡。手機可以識別SD卡,並且可以在手機內將文件傳輸到SD卡。文件保存到內部存儲,而不是SD卡
我試圖硬編碼到SD卡的文件路徑,我也嘗試在沒有插入計算機的情況下運行應用程序 - 一切都無濟於事。我的應用程序能夠將這些文件直接保存到SD卡是非常重要的。有任何想法嗎?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
writeDataToFile("2394872934729348");
}
public void writeDataToFile(String data){
BufferedWriter bufferedWriter = null;
String dataOutFileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/data.txt";
try{
bufferedWriter = new BufferedWriter(new FileWriter(dataOutFileName,true));
bufferedWriter.write(data);
bufferedWriter.flush();
}
catch (IOException e){
e.printStackTrace();
}
finally {
try {
if(bufferedWriter != null){
bufferedWriter.close();
}
} catch (IOException e){
e.printStackTrace();
}
}
MediaScannerConnection.scanFile(this,new String[]{dataOutFileName}, null,null);
}
}
編輯: 我現在嘗試此。我得到一個FileNotFoundException異常,除非我直接寫包文件(com.mypackage等)
File dataDir = new File("/storage/ext_sd/Data/");
dataDir.mkdirs();
File outputFile = new File(dataDir,"data.txt");
try{
FileOutputStream fos = new FileOutputStream(outputFile);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e){
Log.e("Exception", "File write failed: " + e.toString());
}
代碼中沒有任何內容與[可移動存儲](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)有關。您正在寫作Android SDK引用的內容(外部存儲器)(https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html)。使用'getExternalFilesDirs()'獲取應用程序可以在外部和可移動存儲上寫入的位置。 – CommonsWare