JAVA IO流读取图片的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA IO流读取图片的问题相关的知识,希望对你有一定的参考价值。
想把这个目录的这个图片放到 G:\007\2014-10\linshi\a.jpg
放到 G:\007\2014-10\a.jpg 并且把这个a.jpg名字改成b.jpg
用JAVA代码怎么实现??? 求完整代码 新手 文件流一点不懂 求指教
参考一下:
//文件原地址File oldFile = new File("c:/test.xls");
//文件新(目标)地址
String newPath = "c:/test/";
//new一个新文件夹
File fnewpath = new File(newPath);
//判断文件夹是否存在
if(!fnewpath.exists())
fnewpath.mkdirs();
//将文件移到新文件里
File fnew = new File(newPath +oldFile.getName());
oldFile.renameTo(fnew);追问
好像应该是要
读取这个图片
然后得到一个流
然后创建一个图片 把刚才得到的那个图片的流放进去
创建图片之前好像可以命名
我感觉是这样的 就是不知道代码怎么写
我这个是移动图片的。有读取流,输出流的方式:
package org.example.io;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class TestIOStream
/**
*
* DOC 将F盘下的test.jpg文件,读取后,再存到E盘下面.
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
FileInputStream in = new FileInputStream(new File("F:\\\\test.jpg"));// 指定要读取的图片
File file = new File("E:\\\\test.jpg");
if (!file.exists()) // 如果文件不存在,则创建该文件
file.createNewFile();
FileOutputStream out = new FileOutputStream(new File("E:\\\\test.jpg"));// 指定要写入的图片
int n = 0;// 每次读取的字节长度
byte[] bb = new byte[1024];// 存储每次读取的内容
while ((n = in.read(bb)) != -1)
out.write(bb, 0, n);// 将读取的内容,写入到输出流当中
out.close();// 关闭输入输出流
in.close();
参考技术A package io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PictureCopy
public static void main(String[] args) throws IOException
BufferedInputStream in = new BufferedInputStream(new FileInputStream("E://a//QQ图片20141021152833.jpg"));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("E://b//copy.jpg"));
int i;
while((i=in.read())!=-1)
out.write(i);
out.flush();
out.close();
in.close();
//地址换下就行了 参考技术B FileInputStream fi=new FileInputStream("G:/007/2014-10/linshi/a.jpg ");
BufferedInputStream in=new BufferedInputStream(fi);
FileOutputStream fo=new FileOutputStream("G:/007/2014-10/b.jpg");
BufferedOutputStream out=new BufferedOutputStream(fo);
byte[] buf=new byte[1024];
int len=in.read(buf);
//读文件,将读到的内容放入到buf数组中,返回的是读到的长度
while(len!=-1)
out.write(buf, 0, len);
len=in.read(buf);
out.close();
fo.close();
in.close();
fi.close();追问
先谢谢您 我想再问一下 如果我只知道 G:/007/2014-10/linshi/ 这个目录下有一张图片 但是不知道这张图片叫什么 我想要读这个图片的流 要怎么办?
追答//这段代码是获取G:/007/2014-10/linshi/这个目录下的文件 获取到了文件 就可以用上面的代码操作了
File dir = new File("G:/007/2014-10/linshi/");
File[] list = dir.listFiles();
for (int i=0; i<list.length; i++)
if (list[i].isFile()) //是文件
System.out.println("File "+list[i].getName());
else if (list[i].isDirectory()) //是目录
System.out.println("Directory "+list[i].getName());
谢谢您啊
还有一点疑问 想问问您
方便加您扣扣吗?
848378295
java _io_图片到内存(字节数组),字节数组到文件,练习文件流和字节数组流
//图片读取到字节数组中,字节数组写出到文件public class test
public static void main(String[]args)
String path="C:/Users/10853/eclipse-workspace/hell/linux学习路线.png";
byte[] data=toByteArray(path); //图片不能直接到字节数组中,is.read()返回的是int类型的大小,new String是解码
//需要写入字节数组(内存)再通过方法返回到字节数组里
//图片不能直接转换成字符串
toFile(data,"D:/d/to.txt");
//图片到字节数组中
public static byte[] toByteArray(String path)
File f =new File(path);
byte[] last=null;
InputStream is =null; //选用字节流是因为,字符流只能读纯字符文本
ByteArrayOutputStream bos=null;
try
is =new FileInputStream(f);
bos =new ByteArrayOutputStream();
byte[] flush=new byte[1024*10];
int len=-1;
try
while((len=is.read(flush))!=-1)
bos.write(flush,0,len); //写出到字节数组中
bos.flush();
return bos.toByteArray(); //不返回字节数组的话,不知道读取哪段内存
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch(FileNotFoundException e)
e.printStackTrace();
finally
try
if(null!=is)
is.close();
catch(IOException e)
e.printStackTrace();
return null;
//字节数组写出到文件
//字节数组读取到程序中 ByteArrayInputStream
//程序写出到文件 FileOutputStream
public static void toFile(byte[] src,String path)
InputStream is=null;
OutputStream os=null;
try
is=new ByteArrayInputStream(src);
os=new FileOutputStream(path);
byte[] flush =new byte[1024*10];
int len=-1;
while((len=is.read(flush))!=-1)
os.write(flush,0,len);
os.flush();
catch(IOException e)
e.printStackTrace();
finally
try
if(null!=os)
os.close();
catch(IOException e)
e.printStackTrace();
以上是关于JAVA IO流读取图片的问题的主要内容,如果未能解决你的问题,请参考以下文章