当前位置:编程学习 > JAVA >>

用io来实现,大家快来帮帮忙吧,小妹要急坏了!!!

是把几个图片合成一个文件,再从这个文件中把这几个图片分离出来? --------------------编程问答-------------------- 搜索,java zip 压缩/解压缩 --------------------编程问答-------------------- 楼上的方法真的不错,可是如何用程序来实现呢?
我没试过,我设想只是可以使用对象流把图片写入一个文件,然后再用对象流把文件读出来。 --------------------编程问答-------------------- 就是几张图片如何用io流如何输入/输出?如果有具体的代码是再好不过的了 --------------------编程问答-------------------- 楼上不都说了吗,用对象流。。ObjectOutputStream/ObjectInputStream
自己看看API --------------------编程问答-------------------- 试试随机流
记住每个文件的起始位置 --------------------编程问答-------------------- SequenceInputStream
不行? --------------------编程问答-------------------- ImageIO

--------------------编程问答-------------------- 还是2楼的压缩好,将几个文件直接压缩为一个文件 --------------------编程问答-------------------- 只记得float ,int,那些可以按顺序存进去,然后再按顺序读取出来,图片~~ --------------------编程问答-------------------- 看到是妹子,俺来看看,给你顶顶。。。。。。 --------------------编程问答-------------------- 这还不简单, 一会哥给你代码,  --------------------编程问答-------------------- zip好些,将几个图片写到一个文件,要记录图片的起始位置,类型。什么的太麻烦 --------------------编程问答--------------------

package test;

import java.io.*;

/**
 * 
 * @author 陈星宇
 * 纯手写, 请勿抄袭
 */
public class ImageUtil {

public static void main(String[] args) throws IOException {
//合成
imageComposite("f:/1", "f:/2"); // f:/1存放图片的文件夹,  f:/2生成新文件的文件夹

//解析
createImage("f:/2", "f:/3"); // f:/2生成新文件的文件夹,  f:/3还原文件存放的文件夹
}

/**
 * 图片合成
 * @param inDir 存放图片的路径
 * @param outDir 存放合成文件的路径
 * @throws IOException
 */
public static void imageComposite(String inDir, String outDir) throws IOException{
File file = new File(inDir);
File[] files = file.listFiles();
String fileName = createName(files);
for(File f : files){
writeFile(f, outDir+"/"+fileName);
}
}

//生成文件名
private static String createName(File[] files){
StringBuilder s = new StringBuilder();
for (File file : files) {
s.append(file.length()+file.getName().substring(file.getName().indexOf("."))+",");
}
return s.toString();
}

//将文件写入
private static void writeFile(File file, String fileName) throws IOException{
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(fileName, true);
byte[] b = new byte[1024];
int sum;
while((sum=fis.read(b))!=-1){
fos.write(b, 0, sum);
}
fis.close();
fos.close();
}

/**
 * 图片合成
 * @param inDir 存放合成文件的路径
 * @param outDir 存放生成图片的路径
 * @throws IOException
 */
public static void createImage(String inDir, String outDir) throws IOException{
File f = new File(inDir);
File[] files = f.listFiles();
for (File file : files) {
String[] imageNames = parseName(file);
writeFile(file, imageNames, outDir);
}
}

//解析出文件名
private static String[] parseName(File file) {
return file.getName().split(",");
}

//生成图片
private static void writeFile(File file, String[] imageNames, String outDir) throws IOException {
FileInputStream fis = new FileInputStream(file);
for(String str : imageNames){
FileOutputStream fos = new FileOutputStream(outDir+"/"+str, true);
int size = getSize(str);
byte[] b = new byte[size];
fis.read(b);
fos.write(b);
fos.close();
}
fis.close();
}

//从文件名中获取文件长度
private static int getSize(String s){
return Integer.parseInt(s.substring(0, s.indexOf(".")));
}
}



--------------------编程问答-------------------- 刚写的纯粹文件流, 给分给分!!! --------------------编程问答--------------------  如果没记错,commons-io-2.0.1.jar FileUtils应该有现成的api --------------------编程问答-------------------- 读取图片嘛,就用ImageIcon这个类啦,要写入到文件嘛,可以用ObjectOutputStream这个类啦 --------------------编程问答-------------------- 都知道commons-io jar吧
其实还有一个commons-compress jar,apache出品的压缩解压缩工具包。 --------------------编程问答-------------------- 问问题就问问题。还非要带个小妹(实际上不是)。。。。有意思么
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,