如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String?
假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件.
采取InputStream并将其转换为最简单的方法是String什么?
public String convertStreamToString(InputStream is) {
// ???
}
Run Code Online (Sandbox Code Playgroud) 我用Intent ACTION_GET_CONTENT调用startActivityForResult.一些应用程序使用此Uri返回数据:
内容://媒体/外部/图像/媒体/ 18122
我不知道它是图像,视频还是一些自定义内容.如何使用ContentResolver从此Uri获取实际文件名或内容标题?
我有一个Image Uri,使用以下方法检索:
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
Run Code Online (Sandbox Code Playgroud)
这对于需要图像URI等的Intent来说非常有用(所以我确定URI是有效的).
但现在我想将此Image URI保存到SDCARD上的文件中.这更加困难,因为URI并没有真正指向SDCARD或应用程序上的文件.
我是否必须首先从URI创建位图,然后将位图保存在SDCARD上,或者是否有更快的方法(最好是不需要先转换为位图的方法).
(我已经看过这个答案了,但它找不到找到的文件 - /sf/answers/919378211/)
我发现从SD卡上的文本文件一次读取一行是相当慢的.我想如果文件在内部存储器中可能会更快,所以我想将文件从SD卡复制到内部存储器.
我可以在网上找到的文件复制示例似乎涉及一次一个字节从InputStream复制到OutputStream或从FileReader复制到FileWriter.这真的是最快捷,最有效的方法吗?