java实现文件或文件夹赋值剪切

Posted 第三眼的思绪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现文件或文件夹赋值剪切相关的知识,希望对你有一定的参考价值。

java中将文件复制到另一个路径,实际上就是通过io流把文件读取到另一路径下。而剪切则是复制完成后删除原文件,可用以下代码实现。

<pre name="code" class="java">/**
 * @param origPath 需复制的文件路径
 * @param newPath  复制到相应位置的文件路径
 * @description 复制文件
 */
public static boolean copyFile(String origPath, String newPath)
	File o = new File(origPath);
	try
		if(o.isFile())
			copy(o, newPath,false);
		
	catch(Exception e)
		e.printStackTrace();
	
	return false;


/**
 * 
 * @param origPath 需复制的文件夹名
 * @param newPath 复制到文件夹名
 * @return boolean 是否复制成功
 * @description 复制文件夹
 */
public static boolean copyDirectiory(String origPath, String newPath)
	File o = new File(origPath);
	try
		if(o.isDirectory())
			copy(o, newPath,false);
		
	catch(Exception e)
		e.printStackTrace();
	
	return false;



/**
 * @param origPath 需剪切的文件路径
 * @param newPath 剪切到相应位置的文件路径
 * @description 剪切文件
 */
public static boolean cutFile(String origPath, String newPath)
	File o = new File(origPath);
	try
		if(o.isFile())
			copy(o, newPath,true);
		
	catch(Exception e)
		e.printStackTrace();
	
	return false;


/**
 * 
 * @param origPath 剪切制的文件夹名
 * @param newPath 剪切到文件夹名
 * @return boolean 剪切复制成功
 * @description 剪切文件夹
 */
public static boolean cutDirectiory(String origPath, String newPath)
	File o = new File(origPath);
	try
		if(o.isDirectory())
			copy(o, newPath,true);
		
	catch(Exception e)
		e.printStackTrace();
	
	return false;


/**
 * @param origPath 需复或剪切制的文件File对象
 * @param newPath 需复或剪切到路径
 * @param isCut 是否剪切
 * @throws IOException
 * @description 需复或剪切
 */
public static void copy(File o, String newPath,boolean isCut) throws IOException
	InputStream is = null;
	OutputStream os = null;
	try
		File n = new File(newPath);
		File p = n.getParentFile();
		//复制位置父目录是否存在,不存在则创建
		if(!p.exists())
			p.mkdirs();
		//复制对象为文件夹
		if(o.isDirectory())
			if(!n.exists())
				n.mkdir();
			//获取文件下所有子对象
			File[] files = o.listFiles();
			for (File file : files) 
				String path = newPath;
				if(!path.endsWith(File.separator))
					path += File.separator;
				path += file.getName();
				copy(file, path,isCut);
			
		
		//复制对象为文件
		else
			if(!n.exists())
				n.createNewFile();
			is = new FileInputStream(o);
			os = new FileOutputStream(n);
			byte[] b = new byte[1024];
			while(is.read(b) != -1)
				os.write(b);
			
			os.flush();
		
	finally
		try 
			if(is != null)
				is.close();
			
			if(os != null)
				os.close();
			
			//若isCut为true,复制完成对象后删除原对象
			if(isCut)
				o.delete();
			
		 catch (IOException e) 
			e.printStackTrace();
		
	


/**
 * @param origPath 需复或剪切制的文件路径
 * @param newPath 需复或剪切到路径
 * @param isCut 是否剪切
 * @throws IOException
 * @description 需复或剪切
 */
public static void copy(String origPath, String newPath,boolean isCut) throws IOException
	InputStream is = null;
	OutputStream os = null;
	File o = new File(origPath);
	try
		File n = new File(newPath);
		File p = n.getParentFile();
		//复制位置父目录是否存在,不存在则创建
		if(!p.exists())
			p.mkdirs();
		//复制对象为文件夹
		if(o.isDirectory())
			if(!n.exists())
				n.mkdir();
			//获取文件下所有子对象
			File[] files = o.listFiles();
			for (File file : files) 
				String path = newPath;
				if(!path.endsWith(File.separator))
					path += File.separator;
				path += file.getName();
				copy(file.getPath(), path,isCut);
			
		
		//复制对象为文件
		else
			if(!n.exists())
				n.createNewFile();
			is = new FileInputStream(o);
			os = new FileOutputStream(n);
			byte[] b = new byte[1024];
			while(is.read(b) != -1)
				os.write(b);
			
			os.flush();
		
		//若isCut为true,复制完成对象后删除原对象
		if(isCut)
			o.delete();
	finally
		try 
			if(is != null)
				is.close();
			
			if(os != null)
				os.close();
			
			//若isCut为true,复制完成对象后删除原对象
			if(isCut)
				o.delete();
			
		 catch (IOException e) 
			e.printStackTrace();
		
	
 

以上代码实现多种方式复制或剪切文件或文件夹。

以上是关于java实现文件或文件夹赋值剪切的主要内容,如果未能解决你的问题,请参考以下文章

在一行中替换和剪切或嵌套替换(x2)(批处理文件)

怎样使用java编程实现文件的剪切/移动

BAT/CMD中将命令执行结果赋值给变量

java自用代码(包括:新建单线程创建文件夹及文件map转为json并将json写入txt文件剪切或改名)

Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数复制到Excel文件复制到文本文件(默认是tsv格式)复制到文本文件(设置逗号分隔符)

linux或Solaris下,将ls 或find到的文件中的前20个剪切到别的目录下如何实现?