2011-01-08 9 views
0

Wifiを使用してアンドロイドデバイスにファイルをコピーしようとしています。私はファイルの作成を伝えることはできませんが、どこでも見つけることができません...openFileOutputを使用したファイルへのパス

私はEclipse上でDDMSを使用しようとしましたが、データフォルダには何もありません。私は、ファイルがアプリケーションのデータフォルダに配置する必要があり、他のトピックに読ん..しかし、どこにもフォルダがありません...

それは確かに、動作している場合これは、コード

package com.ejemplo.cliente; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 


import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 

public class ClienteSocket extends Activity { 

Socket socket; 
String IP = "192.168.1.101"; 
Integer Puerto = 4444; 
TextView Mensaje; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Mensaje = (TextView)findViewById(R.id.Mensaje); 

    try { 
     socket = new Socket(IP,Puerto); 
     Mensaje.setText("Conectado"); 
     InputStream input = socket.getInputStream(); 
     BufferedReader inReader = new BufferedReader(new     InputStreamReader(socket.getInputStream())); 
     BufferedWriter outReader = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
     String filename = inReader.readLine(); 

     if (!filename.equals("")){ 

      outReader.write("READY\n"); 
      outReader.flush(); 
      Mensaje.setText("Request Acepted"); 

       FileOutputStream wr = openFileOutput(filename,MODE_WORLD_READABLE); 
       OutputStreamWriter osw = new OutputStreamWriter(wr); 


      byte[] buffer = new byte[socket.getReceiveBufferSize()]; 

      int bytesReceived = 0; 

      while((bytesReceived = input.read(buffer))>0) 
      { 

      osw.write(bytesReceived); 
      Toast.makeText(this, "Transfering", Toast.LENGTH_SHORT).show(); 
      } 

      osw.flush(); 
      osw.close(); 
      Mensaje.setText("File Received"); 
     } 

    } catch (UnknownHostException e) { 
     Mensaje.setText("error 1" + e.getMessage()); 
    } catch (IOException e) { 
     Mensaje.setText("error 2" + e.getMessage()); 
    } 

    } 
} 

答えて

5

ですファイルは/data/data/your.package.name/になります。電話機がルートされていない限り、エミュレータ上のそのフォルダにしかアクセスできません。

+0

これはファイルをコピーして、フォルダ??それは他のアプリケーションによって到達することができます...例えば、私が画像をコピーし、Galeryによって表示されたい場合、MP3の場合と同じです。 –

+0

画像の場合は、それをビルドすることができるコンテンツプロバイダがありますアンドロイド。他のアプリケーションからアクセスできるようにするには、独自のコンテンツプロバイダを作成するか、またはSDカードに入れなければなりません – Falmarri

+0

誰でも読み書きできるようにするには、それは外部ストレージにあります:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory() – hackbod

0

- アクセス可能なユーザ - 外部ストレージの場合は、 ファイルf = new File(Environment.getExternalStorageDirectory()、 "Folder/name.ending"); コピーするファイル を作成するには、そのパスも使用してください。 イメージが電話機のギャラリーに表示されないようにするには、「.nomedia」というファイルを画像と同じディレクトリに追加します

関連する問題