Des problèmes de lecture de inputStream à partir d'un Uri et de l'envoyer par un outputStream android
Bonne journée, j'essaie d'envoyer un fichier à partir d'un SDCard
par le biais d'un OutputStream
. J'ai l'intention d'obtenir le URI
partir du nom de fichier que j'ai et ensuite utiliser un InputStream
lire la URI
et convertir des octets dans d'autres à envoyer. Actuellement, le code est coincé dans InputStream
(Comme indiqué ci-dessous) et rien ne se passe.
Aussi, je ne sais pas si je suis en utilisant le URI
correctement pour obtenir le chemin d'accès réel le fichier à envoyer.
S'il vous plaît, toute aide sera grandement appréciée parce que j'ai été coincé ici pour un certain temps maintenant. Je vous remercie.
Mon code:
public void sendFile() {
Log.d(TAG, "sending data");
InputStream inputStream = null;
String filePath = Environment.getExternalStorageDirectory()
.toString() + "/" + files.get(0);
Log.d(TAG, "filepath is" + filePath);
Uri uri = Uri.parse(filePath);
Log.d(TAG, "obtained input stream here in Activity");
Log.d(TAG, "Uri here is" + uri); //nothing happens after here, Basically stuck!!
try {
inputStream = getContentResolver().openInputStream(uri);
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
Log.d(TAG, "obtained input stream here in Activity");
int buffersize = 1024;
byte[] buffer = new byte[buffersize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
AppServices.write(byteBuffer.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
OriginalL'auteur irobotxxx | 2012-01-05
Vous devez vous connecter pour publier un commentaire.
Utilisation :
ou tout simplement utiliser:
désolé de déranger, mais est-ce le fichier de réception ou tout simplement le chemin d'accès?..
File
est fondamentalement une référence à un fichier (même si il doen existe pas encore).Vous pouvez essayer de
(new File(filePath)).exists()
pour vérifier si le fichier existe. Sinon, l'ouverture d'un stream sur le fichier inexistant déclenche une exception. Comment avez-vous gérer les exceptions?Aussi, dans le second cas, vous n'avez pas besoin d'utiliser
getContentResolver().openInputStream(uri)
. Vous obtenez des flux d'entrée directement viaFileInputStream
OriginalL'auteur Peter Knego
J'ai essayé d'utiliser
InputStream is = ctx.getContentResolver().openInputStream(Uri.parse("file://"+fileUri));
Mais ce ne sera pas coupé. Il retourne bizarre octet résultats. J'ai essayé la lecture de cette manière, mais qui diden fonctionne pas non plus.
Pour le faire fonctionner, je fais comme ceci:
OriginalL'auteur Hersker