![](/img/trans.png)
[英]My code only fetches mp3 files from internal storage and not from SD card
[英]Files save to the internal storage, not to the SD card
我正在使用HTC Desire 610進行Android開發。 我按照相同問題的其他答案中的示例操作,但是我保存的所有文件最終都存儲在內部設備存儲中,而不是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());
}
要訪問外部存儲上的私有存儲目錄,請使用getExternalFilesDirs() ,而不要使用getExternalStorageDirectory()。
它將返回一個數組,其中每個位置都有條目。 陣列中的第一個條目被視為主要的外部存儲,除非該位置已滿或不可用,否則應使用該位置。 有關詳細說明,請參閱在Android API上使用外部存儲指南。
您是否已在AndroidManifest.xml中為您的應用授予正確的權限? 如果尚未執行此操作,則需要在清單中添加以下行,以授予您的應用正確的寫入SD卡的權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
也許那是問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.