日期:2014-05-20  浏览次数:20954 次

关于读取ftp文件的问题
现在要做一个图片合并的功能,需要根据图片ftp地址,先从ftp读取2张图片,然后将2张图片合并,再保存到ftp服务器上去,
该如何做呢。
Java code

public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
               // 读取第一张图片
               File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg");
               BufferedImage ImageOne = ImageIO.read(fileOne);
               int width = ImageOne.getWidth();// 图片宽度
               int height = ImageOne.getHeight();// 图片高度
               // 从图片中读取RGB
                int[] ImageArrayOne = new int[width * height];
                ImageArrayOne = ImageOne.getRGB(0, 0, width, height, ImageArrayOne,0, width);
               // 对第二张图片做相同的处理
               File fileTwo = new File("ftp://odin:pass@127.0.0.1:21//0000//00008//20110520//14//X01R00008D1L01I000V000N31234T20110520143010555F0000A000Z00555557S31-1.jpg");
               BufferedImage ImageTwo = ImageIO.read(fileTwo);
               int[] ImageArrayTwo = new int[width * height];
               ImageArrayTwo = ImageTwo.getRGB(0, 0, width, height, ImageArrayTwo,0, width);
               // 生成新图片
               // BufferedImage ImageNew = new BufferedImage(width * 2, height,
               // BufferedImage.TYPE_INT_RGB);
               BufferedImage ImageNew = new BufferedImage(width*2, height,BufferedImage.TYPE_INT_RGB);
               ImageNew.setRGB(0, 0, width, height, ImageArrayOne, 0, width);// 设置左半部分的RGB
               ImageNew.setRGB(width, 0, width, height, ImageArrayTwo, 0, width);// 设置右半部分的RGB
               File outFile = new File("D:\\out1.jpg");
               ImageIO.write(ImageNew, "jpg", outFile);// 写图片
               }catch (Exception e) {    
                  e.printStackTrace();
               }
    }


File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg");
报错:javax.imageio.IIOException: Can't read input file!

------解决方案--------------------
File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg");

FILE是文件句柄...没有这么神奇...还能自适应FTP的...

JDK本身有FTP的处理包,位于sun.net.ftp
也有很多第三方的工具包

具体GOOGLE之