2011-01-08 4 views
0

Wifi를 사용하여 파일을 Android 장치에 복사하려고합니다. 파일의 생성을 말할 수는 없지만 어디서나 찾을 수는 없습니다 ...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

과 같은 디렉토리에 ".nomedia"라는 파일을 추가하십시오. 파일을 더 "공용"파일로 복사 할 수 있습니다. 폴더?? 그래서 다른 응용 프로그램에서 접근 할 수 있습니다 ... 예를 들어 그림을 복사하고 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")); 복사 할 파일 을 만들려면 해당 경로도 사용하십시오. 이미지를 휴대 전화 갤러리에 표시하지 않으려면