Java 文件的复制剪切:
read()
public abstract int read()
throws IOException
从输入流中读取数据的下一个字节。值字节int以 到 范围内的 形式0返回 255。如果由于到达流的末尾而没有可用的字节,-1则返回该值。此方法会一直阻塞,直到输入数据可用、检测到流结束或引发异常。
子类必须提供此方法的实现。
Returns:
数据的下一个字节(值),或者-1是否到达流的末尾。
Throws:
IOException- 如果发生 I/O 错误。
read(byte[] b)
public int read(byte[] b)
throws IOException
从输入流中读取一些字节并将它们存储到缓冲区数组b中。实际读取的字节数以整数形式返回。在输入数据可用、检测到文件结尾或引发异常之前,此方法会一直阻塞。
如果 的长度b为零,则不读取任何字节并 0返回;否则,将尝试读取至少一个字节。如果由于流位于文件末尾而没有可用字节,-1则返回该值;否则,至少读取一个字节并将其存储到b.
读取的第一个字节存储在 elementb[0]中,下一个字节存储在b[1]中,依此类推。读取的字节数最多等于 的长度b。设k为实际读取的字节数;这些字节将 b[0]通过b[k-1]存储在元素中,使元素b[k]到 b[b.length-1]不受影响。
read(b)class的方法与以下InputStream 效果相同:
read(b, 0, b.length)
Parameters:
b- 读取数据的缓冲区。
Returns:
读入缓冲区的总字节数(个数),或者 -1由于已到达流的末尾而没有更多数据。
Throws:
IOException- 如果由于文件结尾以外的任何原因无法读取第一个字节,如果输入流已关闭,或者如果发生其他一些 I/O 错误。
NullPointerException- 如果b是null。
package three;
import java.io.*;
public class CopyCut {
public static void main(String[] args) throws Exception {
CopyCut CC=new CopyCut();
File in=new File("F:\\2102\\day22\\a");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入:1-复制 2-剪切");
int n=Integer.parseInt(reader.readLine());
if (n==1){
File out=new File("F:\\2102\\day22\\a_副本");
CC.copyDir(in,out);
System.out.println("复制成功");
}else {
System.out.println("请输入以day22文件夹为根目录需要剪切的位置:");
System.out.println("F:\\2102\\day22\\"+"?");
String s=reader.readLine();
File out=new File("F:\\2102\\day22\\"+s);
CC.copyDir(in,out);
deleteAll(in);
System.out.println("剪切成功");
}
}
private static void deleteAll(File in) {
if (in.isDirectory()){
File[]files=in.listFiles();
if (files!=null&&files.length>0){
for (File f:files
) {
deleteAll(f);
}
}
}
in.delete();
}
public void copyDir(File fileIn,File fileOut) throws Exception{
if (!fileOut.exists()){
fileOut.mkdirs();
}
File[] listFiles = fileIn.listFiles();
for (File f:listFiles
) {
File fo=new File(fileOut.getAbsoluteFile()+File.separator+f.getName());
if (f.isFile()){
copyFile(f,fo);
}else {
copyDir(f,fo);
}
}
}
public void copyFile(File fileIn,File fileOut) throws Exception {
InputStream is=new FileInputStream(fileIn);
OutputStream os=new FileOutputStream(fileOut);
int n;
byte[]bytes=new byte[1024];
while ((n=is.read(bytes))!=-1){
os.write(bytes,0,n);
}
os.close();
is.close();
}
}
1720

被折叠的 条评论
为什么被折叠?



