字节流
(一)输入流:
InputStream
File file=new File("E:/test/2.txt");
InputStream is=new FileInputStream(file);//多态,输入流文件子类
byte[] by=new byte[1024]; //每次装载的容量
int len=0;
while(-1!=(len=is.read(by))) //读到by字节数组里,每次读1024个字节
{
//循环一次就把一次的数据给str--->字节数组转化为字符串
String str=new String(by,0,len);
System.out.print(str);
}
(二)输出流
OutputStream
File file=new File("E:/test/2.txt");
/*追加形式为true*/
OutputStream os=new FileOutputStream(file,true);
String str="dfjkdfmckdi idi jdk kd\r\n";
/*字符串转为字节数组*/
byte[] data=str.getBytes(); //输出数据是字节数组,转化为字节
os.write(data);
os.flush();
(三)复制文件
CopyFile
File src=new File("E:/test/1.jpg");
File dest=new File("E:/test/10.jpg");
InputStream is=new FileInputStream(src);
OutputStream os=new FileOutputStream(dest);
byte[] data=new byte[1024];
int len=0;
while((len=is.read(data))!=-1) //读取数据返回长度
{
os.write(data, 0, len);
}
os.close();
is.close();
(四)复制文件与文档
CopyDirFile
package ByteStreamDemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyDirDemo2 {
public static void main(String[] args) throws IOException {
File src = new File("E:/test/abc");
File dest = new File("E:/test/dir/aa");
CopyDir(src, dest);
}
public static void CopyDir(File src, File dest) throws IOException {
/**
* 1.传两个路径过来
* 2.如果源文件是目录,目标文件就创建完整路径
* 3.循环取出源文件下的子文件。(子文件源文件File对象,新建一个目标文件
* 路径加名字)[abc/abcd] [abc/1.txt] [10.jpg]------>
* 目标File对象[..aa/abcd][..aa/1.txt][..aa/10.jpg]
*/
if (src.isDirectory()) {
dest.mkdirs();
for (File sub : src.listFiles()) {
/*sub.getName() 取最后一级文件或文件夹*/
CopyDir(sub, new File(dest, sub.getName()));//
}
} else if (src.isFile()) {
CopyFile(src, dest);
}
}
public static void CopyFile(File src, File dest) throws IOException {
InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dest);
byte[] data = new byte[1024];
int len = 0;
while ((len = is.read(data)) != -1) // 读取数据返回长度
{
os.write(data, 0, len);
}
os.close();
is.close();
}
}