java怎样复制图片

java怎样复制图片,第1张

图片本质上还是文件,所以就像复制文件一样就可以了。下面是一个演示程序:

public class CopyImage

{

     public static void main(String[] args) throws Exception

     {

          FileInputStream fi=new FileInputStream("image.jpg")

          BufferedInputStream in=new BufferedInputStream(fi)

          

          FileOutputStream fo=new FileOutputStream("cimage.jpg")

          BufferedOutputStream out=new BufferedOutputStream(fo)

          

          byte[] buf=new byte[4096]

          int len=in.read(buf)

          while(len!=-1)

          {

           out.write(buf, 0, len)

           len=in.read(buf)

          }

          out.close()

          fo.close()

          in.close()

          fi.close()

         }

}

运行程序是改一改图片的路径,另外在实际代码中最后不要想上面的代码直接抛出这样的异常。

JDK宝典里有这样的一段代码,你调用copyFile方法就可以了:

/**

* 复制单个文件, 如果目标文件存在,则不覆盖。

* @param srcFileName 待复制的文件名

* @param destFileName 目标文件名

* @return 如果复制成功,则返回true,否则返回false

*/

public static boolean copyFile(String srcFileName, String destFileName){

return CopyFileUtil.copyFile(srcFileName, destFileName, false)

}

/**

* 复制单个文件

* @param srcFileName 待复制的文件名

* @param destFileName 目标文件名

* @param overlay 如果目标文件存在,是否覆盖

* @return 如果复制成功,则返回true,否则返回false

*/

public static boolean copyFile(String srcFileName,

String destFileName, boolean overlay) {

//判断原文件是否存在

File srcFile = new File(srcFileName)

if (!srcFile.exists()){

System.out.println("复制文件失败:原文件" + srcFileName + "不存在!")

return false

} else if (!srcFile.isFile()){

System.out.println("复制文件失败:" + srcFileName + "不是一个文件!")

return false

}

//判断目标文件是否存在

File destFile = new File(destFileName)

if (destFile.exists()){

//如果目标文件存在,而且复制时允许覆盖。

if (overlay){

//删除已存在的目标文件,无论目标文件是目录还是单个文件

System.out.println("目标文件已存在,准备删除它!")

if(!DeleteFileUtil.delete(destFileName)){

System.out.println("复制文件失败:删除目标文件" + destFileName + "失败!")

return false

}

} else {

System.out.println("复制文件失败:目标文件" + destFileName + "已存在!")

return false

}

} else {

if (!destFile.getParentFile().exists()){

//如果目标文件所在的目录不存在,则创建目录

System.out.println("目标文件所在的目录不存在,准备创建它!")

if(!destFile.getParentFile().mkdirs()){

System.out.println("复制文件失败:创建目标文件所在的目录失败!" )

return false

}

}

}

//准备复制文件

int byteread = 0//读取的位数

InputStream in = null

OutputStream out = null

try {

//打开原文件

in = new FileInputStream(srcFile)

//打开连接到目标文件的输出流

out = new FileOutputStream(destFile)

byte[] buffer = new byte[1024]

//一次读取1024个字节,当byteread为-1时表示文件已经读完

while ((byteread = in.read(buffer)) != -1) {

//将读取的字节写入输出流

out.write(buffer, 0, byteread)

}

System.out.println("复制单个文件" + srcFileName + "至" + destFileName + "成功!")

return true

} catch (Exception e) {

System.out.println("复制文件失败:" + e.getMessage())

return false

} finally {

//关闭输入输出流,注意先关闭输出流,再关闭输入流

if (out != null){

try {

out.close()

} catch (IOException e) {

e.printStackTrace()

}

}

if (in != null){

try {

in.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

}

jar命令不是用来执行jar包的,是用来打包的

执行用java -jar

就楼主给的参数,写一个例子好了

1.建立MANIFEST.MF (在D:\workspace\test\class目录下)

以下内容为文件内容

==================

Manifest-Version: 1.0

Main-Class: a(主类的路径,此选项可选,如果希望在windows下双击就执行,必须写)

Created-By: Abc Company(随便写,这个是创建人名字)

==================

2.打包

按照lz给的条件

在D:\workspace\test\classes\目录下执行

jar cvfm classes.jar MANIFEST.MF *.*

以上命令将class下所有文件打包到classes.jar,生成在class目录下

3.执行

输入java -jar classes.jar即可执行

4.另一种方案

如果希望使用非 JAR 工具建立 JAR 文件, 建议使用 WinRAR. 首先还是需要建立一个清单文件(名字必须为MANIFEST.MF), 向此文件中写入同使用 JAR 工具时一样的内容, 接着需要建立一个META-INF子目录, 然后将 MANIFEST.MF 放入此目录, 接着就可以保持目录结构将所有这些内容使用 WinRAR 压缩为 ZIP 格式的文件, 文件名取为 xxx.jar 即可.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11929612.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存