IO流那一块的怎么把一个图片的内容读取到一个字节数组中去
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流那一块的怎么把一个图片的内容读取到一个字节数组中去相关的知识,希望对你有一定的参考价值。
1.定义一个字节数组,将其输出到屏幕上。2.将一个图片的内容读取到字节数组中。 请高手帮忙实现下,谢谢、、 因为积分不多了,就只能给五分啦、、见谅啊!
参考技术A 先用FileInputStream从这个图片读取输入流,然后包装成字节数组。这样就可以了! 参考技术B FileInputStream fileIn = new FileInputStream(path);FileOutputStream fileOut = new FileOutputStream(newPath);BufferedOutputStream bufOut = new BufferedOutputStream(fileOut);byte[] buf = new byte[512];
while (fileBuff.read(buf) != -1)
bufOut.write(buf);
java io流如何读取文件效率高
看了好多人在使用流时 定义一个1024字节数组 如果读取字节数不够1024貌似有时会又乱码,我记得inputstream有个方法 available() 可以直接指定长度 但是我又担心一口气定义的数组长度太长会不会影响性能,求教育,谢谢
你在类的使用上不太恰当。如果你想读取文本内容,你应该使用InputStreamReader这个类,使用这个类并且指定文本内容的字符集,就可以读出正确的内容。
InputStream这个类是用来读取二进制字节的,比如做文件复制的时候,应该是用InputStream这个类。
不管是InputStreamReader还是InputStream,都可以声明临时缓冲数组,不同的是InputStreamReader声明的数组是:char[] cs = new char[1024]
而InputStream声明的数组是:byte[] bs = new byte[1024] 参考技术A java提供了搞笑读取文件的方式:文件流,下面以FileInputStream和Apache Commons IO流两种读取方式来详细讲解:
以下两种代码均是读取一个大约1G的文件:
1、文件流
FileInputStream inputStream = null;
Scanner sc = null;
try
inputStream = new FileInputStream(path);
sc = new Scanner(inputStream, "UTF-8");
while (sc.hasNextLine())
String line = sc.nextLine();
// System.out.println(line);
// note that Scanner suppresses exceptions
if (sc.ioException() != null)
throw sc.ioException();
finally
if (inputStream != null)
inputStream.close();
if (sc != null)
sc.close();
这种方案将会遍历文件中的所有行——允许对每一行进行处理,而不保持对它的引用。总之没有把它们存放在内存中:(大约消耗了150MB内存)
2、Apache Commons IO流
同样也可以使用Commons IO库实现,利用该库提供的自定义LineIterator:
LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");
try
while (it.hasNext())
String line = it.nextLine();
// do something with line
finally
LineIterator.closeQuietly(it);
由于整个文件不是全部存放在内存中,这也就导致相当保守的内存消耗:(大约消耗了150MB内存) 参考技术B 慢看、。。。要有耐心
以上是关于IO流那一块的怎么把一个图片的内容读取到一个字节数组中去的主要内容,如果未能解决你的问题,请参考以下文章