2012-11-14 64 views
0

我正在嘗試在我的應用程序運行時將數據存儲在文件中,以便在將它連接到PC時輕鬆將其從設備中取出。如何將文件寫入可在PC上顯示的Android SD卡

現在,我可以創建文件並寫入,但我的計算機無法看到文件。

請注意,我真的不喜歡使用DDMS,因爲我會問有限經驗的人這樣做。

我知道它正在寫入文件,因爲我可以在設備的文件管理器上看到它。如果我將文件複製到設備上的另一個目錄中,我可以在計算機上看到它,但這不是適用於我的情況的有效解決方法。

以下是我有:

String fileName = "test"; 
String stuffToWrite = "testString"; 
try 
{ 

    File sdCard = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
    File dir = new File (sdCard.getAbsolutePath()); 
    dir.mkdirs(); 
    File file = new File(dir, fileName + ".csv"); 

    file.setReadable(true,false); 


    FileOutputStream fOut = new FileOutputStream(file); 

    OutputStreamWriter osw = new OutputStreamWriter(fOut); 

    // Write the string to the file 
    osw.write(stuffToWrite); 

    /* ensure that everything is 
    * really written out and close */ 
    osw.flush(); 
    osw.close(); 
} 

謝謝您的時間。

+0

這可能沒有幫助,但是當我將圖像寫入「圖片」目錄時,必須先斷開設備與計算機的連接,然後重新連接,然後才能通過文件目錄看到它們。 – jnthnjns

+0

感謝您的想法。不幸的是,它似乎不適用於我的情況,但我會爲未來記住這一點。謝謝! – Dish

+0

對於將其外部存儲設備導出爲「USB Mass Storage Device」(典型的Android 2.x版本)的設備,您**不能**同時從手機和計算機訪問外部存儲設備。相反,他們輪流 - 當存儲裝置安裝到PC時,手機會失去訪問權限。較新的MTP方案以其他方式爲代價消除了這個問題。 –

回答

0

嘗試添加file.createNewFile();如果外部存儲裝置是不

package external.com; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.PrintWriter; 

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

     String ex_storage_directory; 

     ex_storage_directory = Environment.getExternalStorageDirectory().toString(); 

     File f = new File(ex_storage_directory, "hello.txt"); 

     try 
     { 
      PrintWriter p = new PrintWriter(new FileWriter(f)); 

      p.println("Hello External Storage!"); 
      p.close(); 
     } 
     catch(java.io.IOException e) 
     { 
      return; 
     } 
    } 

到getExternalStorageDirectory()的調用將失敗:

File file = new File(dir, fileName + ".csv"); 
file.createNewFile(); 
+1

該文件已創建,但它在SDCard上不可見。我只能通過設備上的文件管理器查看它。 – Dish