我有一个方法,它接受一个InputStream并从中读取数据.我想将此方法与ByteBuffer一起使用.有没有办法包装ByteBuffer所以它可以作为流访问?
简短的问题,
我在一些旧代码中看到a ByteArrayInputStream创建如下:
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(somebytes)));
Run Code Online (Sandbox Code Playgroud)
然后BufferedReader用来somebytes逐行读出.
一切正常,但我注意到它BufferedReader永远不会关闭.
这一切都在长时间运行的websphere应用程序中运行,somebytes并不是很糟糕(最多200k),它每周只调用几次而且我们没有遇到任何明显的内存泄漏.所以我希望所有对象都能成功地进行垃圾回收.
我总是(曾经)在一个finally声明中了解到需要关闭输入/输出流.ByteStreams这个规则是例外吗?
亲切的问候Jeroen.
我的代码是:
InputStream confFile=classLoader.getResourceAsStream("myconffile.properties");
Run Code Online (Sandbox Code Playgroud)
在文档中:
InputStream的close方法什么都不做.
这是否意味着我不需要关闭InputStream?
我在将输入流从Web转换为位图时遇到问题.仅当输入图像类型为.BMP(位图)时才会出现问题.在这种情况下:bitmapFactory.decodeStream返回null.
任何提示如何解决这个问题或我应该在哪里继续我的调试?
平台:Android(Honeycomb)
URLConnection conn = url.openConnection();
conn.connect();
inputStream = conn.getInputStream();
bufferedInputStream = new BufferedInputStream(inputStream);
bmp = BitmapFactory.decodeStream(bufferedInputStream);
Run Code Online (Sandbox Code Playgroud) java multithreading android inputstream android-3.0-honeycomb
使用Scala,从InputStream读取到bytearray的最佳方法是什么?
我可以看到你可以将InputStream转换为char数组
Source.fromInputStream(is).toArray()
Run Code Online (Sandbox Code Playgroud) 我有一个相对文件路径(例如"/res/example.xls"),我想从该路径获取该文件的InputStream对象.
我检查了JavaDoc并没有找到一个构造函数或方法来从路径获取这样的InputStream /
任何人有任何想法?请告诉我!
谢谢
是否可以使用文件打开的异常作为使用的替代方法.is_open()?
例如:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,那是什么类型的someException?
我试图使用Socket程序从服务器读取字节,即我使用InputStream来读取字节.如果我传递长度大小,我能够读取字节,但我不确定长度是多少.所以我无法初始化字节数组.
我也尝试过while (in.read() != -1),我观察它在发送数据时循环工作正常,但循环后的下一行不可执行,我觉得它仍然在寻找流中的数据,但没有数据.如果我关闭服务器连接,那么我的客户端将执行下一行,然后循环.
我不知道我哪里出错了?
this.in = socket.getInputStream();
int dataInt = this.in.read();
while(dataInt != -1){
System.out.print(","+i+"--"+dataInt);
i++;
dataInt = this.in.read();
}
System.out.print("End Of loop");
Run Code Online (Sandbox Code Playgroud)
我得到输出: -
,1--0,2--62,3--96,4--131,5--142,6--1,7--133,8--2,9--16,10--48,11--56,12--1,13--0,14--14,15--128,16--0,17--0,18--0,19--48,20--0,21--0,22--0,23--0,24--0,25--1,26--0,27--0,28--38,29--114,30--23,31--20,32--70,33--3,34--20,35--1,36--133,37--48,38--51,39--49,40--52,41--49,42--55,43--49,44--52,45--52,46--54,47--55,48--50,49--51,50--52,51--48,52--53,53--56,54--51,55--48,56--48,57--57,58--57,59--57,60--57,61--57,62--57,63--57,64--56
Run Code Online (Sandbox Code Playgroud)
但没有输出: - 循环结束
请指导我如何关闭循环?
期待您的回复.提前感谢你们.
我疯了,我创建了一个文件对象,所以可以用ObjectInputStream读取它,然后放置了assets文件夹.该方法适用于小于1M的文件,并且对较大的文件给出错误.我读到这是Android平台的限制,但我也知道可以"轻松"避免.例如,那些已经下载游戏Reging Thunder的人可以很容易地看到他们的资产文件夹中的文件大小是18.9M.这是我从ObjecInputStream读取1个对象的代码
File f = File.createTempFile("mytempfile", "dat");
FileOutputStream fos = new FileOutputStream(f);
InputStream is = mc.getAssets().open(path,3);
ObjectInputStream ois=new ObjectInputStream(is);
byte[] data = (byte[]) ois.readObject();
fos.write(data);
fos.flush();
fos.close();
ois.close();
is.close();
Run Code Online (Sandbox Code Playgroud)
现在我有一个未压缩的文件,我可以使用它而不用担心错误"这个文件不能作为文件描述符打开;它可能是压缩的"
此函数适用于小于1M的文件,较大的文件在"ObjectInputStream ois = new ObjectInputStream(is);"行返回java.io.IOException.
为什么??
我正在使用以下代码将InputStream转换为JSONObject.我的问题是,是否有任何简单的方法将InputStream转换为JSONObject.不做InputStream - > BufferedReader - > StringBuilder - > loop - > JSONObject.toString().
InputStream inputStreamObject = PositionKeeperRequestTest.class.getResourceAsStream(jsonFileName);
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputStreamObject, "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
JSONObject jsonObject = new JSONObject(responseStrBuilder.toString());
Run Code Online (Sandbox Code Playgroud)