1.File可以操作文件以及创建文件目录
2.OutputStream与InputStream主要操作字节数据,以文件拷贝为主
3.如果程序输出数据使用PrintWriter(PrintStream),输入数据用Scanner(BufferedReader);
package cn.niyulu.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class Test {
public static void main(String[] args) throws Exception {
File inFile = new File("D:"+File.separator+"hello.jpg");//输入路径
File outFile = new File("D:"+File.separator+"my.jpg");//输出路径
if(!outFile.getParentFile().exists()) {//必须考虑目录问题
outFile.getParentFile().mkdirs();
}
InputStream input = new FileInputStream(inFile);
OutputStream output = new FileOutputStream(outFile);
byte data[] = new byte[2048];//每次读取的数据量
int temp = 0;//保存读取的长度
while((temp = input.read(data))!=-1) {
output.write(data, 0, temp);
}
output.flush();
output.close();
input.close();
}
}
虽然OutputStream.InputStream.Writer.Reader可以实现数据的输入与输出操作,但是功能上有缺陷,只能以字节数组或者是字符数组的形式进行操作,但是对于其他的数据类型,这样的操作就不方便了
输出数据使用打印流
package cn.niyulu.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws Exception {
File file = new File("D:"+File.separator+"out.txt");
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
PrintStream out = new PrintStream(new FileOutputStream(file));
out.print("倪裕禄大帅哥!\r\n倪裕禄小帅哥!\r\n倪裕禄中帅哥!");
out.flush();
out.close();
}
}
运行结果
数据的输入
package cn.niyulu.io;
import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
File file = new File("D:"+File.separator+"out.txt");
Scanner scan = new Scanner(new FileInputStream(file));
scan.useDelimiter("\n");
while(scan.hasNext()) {
System.out.print(scan.next());
}
scan.close();
}
}
运行结果