Добрый день, я пытаюсь отправить файл с SDCard
через OutputStream
. Я намерен получить URI
из имени файла, которое у меня есть, а затем использовать InputStream
для чтения URI
и конвертировать в байты в других для отправки. В настоящее время код застрял в get InputStream
(как указано ниже), и ничего не происходит.Проблемы с чтением inputStream из Uri и отправка через outputStream android
Кроме того, я не знаю, правильно ли я использую URI
, чтобы получить фактический путь к отправляемому файлу.
Пожалуйста, любая помощь будет принята с благодарностью, потому что я застрял здесь некоторое время. Спасибо.
Мой код:
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();
}
}
}
}
Я попробовал оба из них, но ничего не кажется, происходит. не может даже достичь выхода logcat после этой строки inputStream = getContentResolver(). openInputStream (uri) ;. не знаю почему ?. – irobotxxx
извините, но это фактический файл, который он получает или только путь? .. – irobotxxx
'Файл' - это в основном ссылка на файл (даже если он еще не существует). –