来源:http://www.bjsxt.com/
一、S02E147_01IO_字节流、节点流、文件读取、写出、追加文件
1.读取文件
a.建立联系:File对象 源头
b.选择流:文件输入流 InputStream FileInputStream
c.操作:byte[] car = new byte[1024]; + read + 读取大小
输出
d.释放资源:关闭
package com.test.io.stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* 1.读取文件
a.建立联系:File对象 源头
b.选择流:文件输入流 InputStream FileInputStream
c.操作:byte[] car = new byte[1024]; + read + 读取大小
输出
d.释放资源:关闭
*/
public class FileRead {
/**
* @param args
*/
public static void main(String[] args) {
//a.建立联系:File对象
File src = new File("G:/java/test/1.txt");
//b.选择流:文件输入流 InputStream FileInputStream
InputStream is = null;//提升作用域
try {
is = new FileInputStream(src);
//c.操作:不断读取
byte[] car = new byte[10];//缓冲数组
int len = 0;//接收实际读取大小
//循环读取
while(-1 != (len = is.read(car))){
//输出:字节数组转为字符串
String info = new String(car,0,len);
System.out.print(info);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件不存在");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("读取文件失败");
} finally{
//d.释放资源:关闭
if(null != is){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭文件输入流失败");
}
}
}
}
}
2.写出文件
a.建立联系:File对象 目的地
b.选择流:文件输出流 OutputStream FileOutputStream
c.操作:write() + flush()
d.释放资源:关闭
package com.test.io.stream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* 2.写出文件
a.建立联系:File对象 目的地
b.选择流:文件输出流 OutputStream FileOutputStream
c.操作:write() + flush()
d.释放资源:关闭
*/
public class FileWrite {
public static void main(String[] args) {
//a.建立联系:File对象 目的地
File des = new File("G:/java/test/test.txt");
//b.选择流:文件输出流 OutputStream FileOutputStream
OutputStream os = null;
try {
os = new FileOutputStream(des,true);//true:以追加的形式写出文件;false:覆盖
//c.操作:write() + flush()
String str = "anything is good \r\n";
//字符串转字节数组
byte[] data = str.getBytes();
os.write(data,0,data.length);
os.flush();//强制刷新出去
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件未找到");
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件写出失败");
} finally{
//d.释放资源:关闭
if(null != os){
try {
os.close();//关闭时会flush
} catch (Exception e2) {
System.out.println("关闭输出流失败");
}
}
}
}
}
二、S02E148_01IO_拷贝文件
3.文件拷贝, 程序为桥梁
a.建立联系:File对象 源头和目的地
b.选择流:文件输入流 InputStream FileInputStream
文件输出流 OutputStream FileOutputStream
c.操作:拷贝
byte[] flush = new byte[1024];
int len = 0;
while(-1 != (len = 输入流.read(flush))){
输出流.write(flush,0,len)
}
输出流.flush
d.释放资源:关闭两个流
package com.test.io.stream;
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;
/**
* 3.文件拷贝,程序为桥梁
a.建立联系:File对象 源头和目的地
b.选择流:文件输入流 InputStream FileInputStream
文件输出流 OutputStream FileOutputStream
c.操作:拷贝
byte[] flush = new byte[1024];
int len = 0;
while(-1 != (len = 输入流.read(flush))){
输出流.write(flush,0,len)
}
输出流.flush
d.释放资源:关闭两个流
*/
public class CopyFile {
public static void main(String[] args) {
String srcPath = "G:/java/test/background.jpg";
String desPath = "G:/java/test/100.jpg";
try {
copyFile(srcPath,desPath);
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件没有找到");
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件拷贝失败或者关闭流失败");
}
}
/**
* 文件的拷贝,传入File参数
* @param src
* @param des
* @throws FileNotFoundException
* @throws IOException
*/
public static void copyFile(File src,File des) throws FileNotFoundException,IOException {
//1.建立联系 源头(存在且为文件) + 目的地(文件可以不存在)
if(!src.isFile()){
throw new IOException("只能拷贝文件");
}
//des为存在的文件夹,不能建立与文件夹同名的文件
if(des.isDirectory()){
System.out.println(des.getAbsolutePath() + "不能建立与文件夹同名的文件");
throw new IOException(des.getAbsolutePath() + "不能建立与文件夹同名的文件");
}
//2.选择流
InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(des);
//3.文件拷贝 循环+读取+写出
byte[] flush = new byte[1024];
int len = 0;
//读出
while(-1 != (len = is.read(flush))){
//写出
os.write(flush,0,len);
}
os.flush();//强制刷出
//关闭流,先打开的后关闭
os.close();
is.close();
}
/**
* 文件的拷贝,传入String参数,路径
* @param srcPath
* @param desPath
* @throws FileNotFoundException
* @throws IOException
*/
public static void copyFile(String srcPath,String desPath) throws FileNotFoundException,IOException {
copyFile(new File(srcPath),new File(desPath));
}
}