Dúvida ao Enviar Arquivo .txt via bluetooh em Android

Eu gostaria de saber se essa é a maneira correta de enviar um arquivo .txt do meu sdCarde para o meu servidor via Bluetooth.
Segue os código da parte do Cliente e a parte do Servidor.
Cliente:


public class ClienteActivity extends Activity {
   
	private EditText mensagem;
	 
    /**
     * Botão de Envio
     */
    private Button enviar;
 
    /**
     * Socket de Conexão
     */
    private BluetoothSocket socket;
 
    /**
     * Fluxo de Entrada de Dados
     */
    private InputStream input;
 
    /**
     * Fluxo de Saída de Dados
     */
    private OutputStream output;
 
    /**
     * Manipulador de Mensagens
     */
    private final Handler h = new Handler() {
        public void handleMessage(Message msg) { // Manipular Mensagem
            String content = (String) msg.obj; // Captura do Conteúdo da Mensagem
            Toast.makeText(getApplication(), content, Toast.LENGTH_SHORT).show();
        }
    };
 
    /**
     * Envia Mensagens entre Fluxos de Execução
     * @param message Mensagem para Envio
     */
    public void alert(String message) {
        Message m = h.obtainMessage();
        m.obj = message;
        h.sendMessage(m);
    }
  
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Cliente de Conexão Bluetooth
        // Caixa de Texto
        mensagem = (EditText) findViewById(R.id.mensagem);
        // Botão de Envio
        enviar = (Button) findViewById(R.id.enviar);
        enviar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	
            	
            	
            	
            	
            	final String conteudo = mensagem.getText().toString();
                  // Transferidor de Dados
                  Thread sender = new Thread(){
                      public void run() {
                          // Conteúdo para Envio
                          byte content[] = conteudo.getBytes();
                          try { // Possibilidade de Erro
                        	  
                        	//File sdcard = Environment.getExternalStorageDirectory().getPath()+"/DigiCerto/";
							File file = new File(Environment
									.getExternalStorageDirectory().getPath()
									+ "/App/", "arquivo.txt");
							FileInputStream in = new FileInputStream(file);
							// Get the text file
							// File file = new File(sdcard,"producao.txt");
							// Read text from file
							output  = socket.getOutputStream();
							OutputStreamWriter osw = new OutputStreamWriter(output);
							BufferedWriter writer = new BufferedWriter(osw);
							writer.write(file.getName() + "\n");
							writer.flush();
							int tamanho = 4096; // buffer de 4KB    
			                byte[] buffer = new byte[tamanho];    
			                int lidos = -1;    
			                while ((lidos = in.read(buffer, 0, tamanho)) != -1) {    
			                    System.out.println(lidos);  
			                    output.write(buffer, 0, lidos);    
			                }    
			                output.flush();   
                    
                        	  
                            //output.write(content.length); // Tamanho do Conteúdo
                            //output.write(content); // Conteúdo Propriamente Dito
                              // Aviso de Sucesso ao Usuário
                              alert("Texto Enviado");
                          } catch (IOException e) { // Erro Encontrado
                              // Aviso de Erro ao Usuário
                              alert("Erro na Transferência");
                          }
                      }
                  };
                  // Executando o Fluxo de Processamento
                  sender.start(); // Inicialização
              }           
        });
        // Requisição do Adaptador
        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        if (adapter == null) { // Não há Bluetooth
            // Mensagem de Erro ao Usuário
            alert("Adaptador não Encontrado");
            finish();
        }
        if (!adapter.isEnabled()) { // Bluetooth Habilitado?
            // Mensagem de Erro ao Usuário
            alert("Bluetooth Desabilitado");
            finish();
        }
        // Dispositivos Pareados
        Set<BluetoothDevice> devices = adapter.getBondedDevices();
        // Servidor Bluetooth
        BluetoothDevice server = null;
        String servername = "ANALISTA"; // Nome do Servidor
        // Pesquisa do Servidor Pareado
        for (BluetoothDevice device : devices) { // Laço de Busca
            if (servername.equals(device.getName())) { // Nomes Idênticos?
                server = device; // Dispositivo Encontrado e Selecionado
            }
        }
        // Dispositivo Encontrado?
        if (server == null) {
            // Mensagem de Erro ao Usuário
            alert("Servidor não Pareado");
            finish();
        }
        // Servidor Bluetooth
        final BluetoothDevice computer = server;
        // Abrindo a Conexão
        Thread connector = new Thread(){
            public void run() {
                // Identificador Único do Servidor
                UUID ident = UUID.fromString("4219a890-1ec3-11e2-81c1-0800200c9a66");
                try {
                    // Socket de Conexão
                    BluetoothSocket s =
                        // Conexão a Partir do Identificador Único
                        computer.createRfcommSocketToServiceRecord(ident);
                    // Conectar ao Servidor
                    s.connect(); // Execução Bloqueante
                    // Fluxos de Entrada e Saída de Dados
                    InputStream in = s.getInputStream();
                    OutputStream out = s.getOutputStream();
                    // Captura de Objetos
                    socket = s; // Socket de Conexão
                    input  = in; // Fluxo de Entrada de Dados
                    output = out; // Fluxo de Saída de Dados
                    // Informar sobre Conexão
                    alert("Conexão Aberta");
                } catch (IOException e) { // Erro de Entrada e Saída de Dados
                    // Mensagem de Erro ao Usuário
                    alert("Erro de Conexão");
                    finish();
                }
            }
        };
        // Executando o Fluxo de Processamento
        connector.start(); // Inicialização
    }
 
    public void onDestroy() {
        super.onDestroy(); // Método Sobrescrito
        if (socket != null) { // Socket Configurado?
            try {
                socket.close(); // Fecha Conexão
            } catch (IOException e) { // Erro Encontrado?
                // Mensagem de Erro ao Usuário
                alert("Erro ao Fechar Socket");
            }
        }
    }

E agora a parte do servidor para receber o arquivo:

[code]public class Server implements Runnable{

@Override
public void run() {
	String uuid = "4219a890-1ec3-11e2-81c1-0800200c9a66";
	 // Endereço para Conexão
    String address = "btspp://localhost:" + uuid.replace("-", "");
    
    
    try {
        // Abertura de Conexão
        StreamConnectionNotifier notifier =
            (StreamConnectionNotifier) Connector.open(address);
        // Fluxo de Conexão
        StreamConnection stream = notifier.acceptAndOpen();
        // Captura de Fluxos
        InputStream input = stream.openInputStream();
        OutputStream output = stream.openOutputStream();
        // Laço de Repetição
        int size; byte content[]; // Auxiliares de Leitura
        String message = ""; // Mensagem Enviada pelo Cliente
       // while (!message.equals("SAIR")) {
            // Tamanho dos Dados
            //size = input.read(); // Quantidade de Bytes
            // Buffer de Leitura
           // content = new byte[size];
            // Preenchimento dos Dados
           // input.read(content); // Entrada de Informação                
            // Transformação da Mensagem Enviada
          //  message = new String(content); // Novo Elemento

           // // Exibição na Saída Padrão
          //  System.out.println(message);
          //  WriteFile(content.toString());
       // }
        
        
        
        InputStream in = stream.openInputStream();
        InputStreamReader isr = new InputStreamReader(in);  
        BufferedReader reader = new BufferedReader(isr);  
        String fName = reader.readLine();  
           System.out.println(fName);  
              File f1 = new File("D:/" + fName);  
              FileOutputStream out = new FileOutputStream(f1);               
           int tamanho = 4096; // buffer de 4KB    
           byte[] buffer = new byte[tamanho];    
           int lidos = -1;    
           while ((lidos = in.read(buffer, 0, tamanho)) != -1) {    
               out.write(buffer, 0, lidos);    
           }    
        
       
    }catch (IOException e) {
		e.printStackTrace();
	}
    catch (Exception e) {
		e.printStackTrace();
	}
	
}[/code]

Espero que possam me ajudar, minha dúvida é so como enviar o arquivo mesmo.
Obrigado.
Que está nesse trecho da parte do cliente:

File file = new File(Environment.getExternalStorageDirectory().getPath()
									+ "/App/", "producao.txt");
							FileInputStream in = new FileInputStream(file);
							
							output  = socket.getOutputStream();
							OutputStreamWriter osw = new OutputStreamWriter(output);
							BufferedWriter writer = new BufferedWriter(osw);
							writer.write(file.getName() + "\n");
							writer.flush();
							int tamanho = 4096; // buffer de 4KB    
			                byte[] buffer = new byte[tamanho];    
			                int lidos = -1;    
			                while ((lidos = in.read(buffer, 0, tamanho)) != -1) {    
			                    System.out.println(lidos);  
			                    output.write(buffer, 0, lidos);    
			                }    
			                output.flush();   

Obrigado desde já.

Não entendi a pergunta. Você realizou alguma tentativa?

Sim mais da erro na linha.
InputStream in = stream.openInputStream();
E não chega nenhuma mensagem.
Obrigado pela a resposta

[quote=joserodrigues]Sim mais da erro na linha.
InputStream in = stream.openInputStream();
E não chega nenhuma mensagem.
Obrigado pela a resposta[/quote]

Quando for assim, posta o log de erro. Assim fica mais fácil a identificação do problema.

Eu consegui mandar os dados e ler no server.
Agora só não estou conseguindo criar o arquivo em um diretório meu.
Segue o código do lado servidor para ler o que foi mandado do Cliente Android via Bluetooth:


File f1 = new File("D:\\Producao.txt");    
            FileOutputStream out = new FileOutputStream(f1);          
            
            String texto = null;  
            byte[] buffer = new byte[4096];  
            int lidos = -1;  
            while ((lidos = input.read(buffer, 0, buffer.length)) != -1) {  
                texto = new String(buffer, 0, lidos);  
                System.out.print(texto);  
                out.write(buffer, 0, lidos); 
            }  

Ele mostra os dados do arquivo que está no device através do System.out.print(texto); , mas não cria o arquivo no meu diretorio D:\
pode me ajudar.
Desde já obrigado