2013-01-09 1 views
0

J'essaie d'accéder à un fichier partagé de mon application, par exemple //172.24.9.13/c/2012xp.mdbfichiers partagés sur le réseau d'accès Windows à partir de l'application Android

En faisant:

new File("//172.24.9.13/c/2012xp.mdb"); 

il ne fonctionne pas.

Je trouve la bibliothèque jcifs et la création

new SmbFile("//172.24.9.13/c/2012xp.mdb"); 

cela fonctionne, mais le problème est que je besoin d'un java.io.File.

J'ai également vu qu'il n'y a aucun moyen de monter les smb sur les appareils Android sans les enraciner.

Existe-t-il un moyen d'obtenir une instance java.io.File de mon fichier partagé?

+0

qu'est-ce que vous essayez de faire avec elle? –

Répondre

0

Je ne pense pas que vous serez en mesure de le lire comme java.io.File parce que ce n'est pas un.

Si vous avez absolument besoin d'un java.io.File vous devrez probablement appeler smbFile.getInputStream() et copier dans un fichier local, que vous utilisez ce fichier local. Considérant qu'il s'agit d'un fichier .mdb, vous voulez probablement lire des données de la base de données, et il se peut que ce soit un fichier volumineux et que vous ne souhaitiez pas le copier. Dans ce cas, votre seule option est de configurer un serveur, avec une API qui répond dans JSON et votre application lui envoie des requêtes GET.

0

essayez ce code. Je ne suis pas sûr du format de fichier .mdb. mais cela fonctionne pour les fichiers PDF.

créez d'abord un SmbFileInputStream en utilisant votre fichier smb.

in = new SmbFileInputStream(sFile); 

puis créer un fichier de sortie dans la mémoire de dispositif (carte SD)

outputfile = new File(dir, "todevice.pdf"); 

puis créer un FileOutputStream (java IO)

out = new FileOutputStream(outputfile); 

Ensuite, lire l'entrée (SMB) et écrire à la sortie (IO)

while ((read = in.read(buffer)) > 0 ) 
{ 
    try { 
      out.write(buffer, 0, read); 
    } catch (IOException e) { 
    } 
} 

Maintenant, vous avez un fichier sur votre carte SD

Questions connexes