简单记录一下IO流的小案例:
public class Character_Demo {
public static void main(String[] args) throws Exception {
//创建字符流,读和写的对象,读取f盘a.txt内容,通过写的对象,再拷贝一份到f盘
BufferedReader reader=new BufferedReader(new FileReader("f:\\a.txt"));
BufferedWriter writer=new BufferedWriter(new FileWriter("f:\\b.txt"));
//读取文本有2种方式
//1.按照字符读取
/*char[] c=new char[20];
int len=0;
while ((len=reader.read(c))!=-1){
writer.write(c,0,len);
}*/
//2.每次读取一行
String line;
while ((line=reader.readLine())!=null){
writer.write(line);
writer.newLine();//换行
}
writer.close();
reader.close();
}
}
/**
* 文件上传
* 思路:
* 1. 读取 被上传文件路径 , 如果有多个 图片 ,获取图片列表 ,循环读取即可
* 2. 创建上传后的路径 c:\\upload
* 如果路径不存在,才去创建
* 3. 读文件和写文件的过程
* 4.关流
*/
public class File_Upload {
public static void main(String[] args) throws Exception {
//被上传文件的路径
File srcFile=new File("f:\\img");
//上传后的路径
String path="f:\\upload\\";
File uploadFile=new File(path);
if (!uploadFile.exists()){
uploadFile.mkdir();//创建目录,mkdir()可以创建单级路径或者多级路径
}
//获取srcFile中的图片列表
File[] files = srcFile.listFiles();
for (File file:files){//循环遍历所有图片,f表示单独一张
//获取输入流
//InputStream is=new FileInputStream(file);//抛出异常
//缓冲流,也叫包装流
InputStream is=new BufferedInputStream(new FileInputStream(file));
//目标路径(为解决 文件重名覆盖问题 ,可以使用UUID 或者 时间戳 (毫秒值))
String distPath=path+System.currentTimeMillis()+file.getName();
//获取输出流
//OutputStream os=new FileOutputStream(distPath);
OutputStream os=new BufferedOutputStream(new FileOutputStream(distPath));
//读和写的具体实现
byte[] buf=new byte[1024];//通过字节数组提高读取效率
int len=0;//每次读取的长度,如果读取到文件末尾,该值等于-1代表结束
while ((len=is.read(buf))!=-1){
os.write(buf,0,len);
}
os.close();
is.close();
}
}
}
/**
* 实现思路:
* 1. 创建 File对象 ,关联给定的路径
* 2. 可以获取该路径下的 文件数组
* 判断如果是1个文件 ,直接打印该文件名
* 如果是一个路径, 递归 调用(自己调用自己)
* API 指的是 类 方法 字段
* 更新需求:
* 如果 文件后缀是 .java结尾 ,那么打印.Java文件
*/
public static void main(String[] args) {
String path="f:\\";//路径
File srcFile=new File(path);//源文件
show(srcFile);
}
private static void show(File srcFile) {
//获取srcFile里面的文件列表
File[] files = srcFile.listFiles();
//循环遍历目录下所有的文件夹和文件
for (File file:files){
if (file.isFile()){
//System.out.println(file.getAbsoluteFile());//文件的绝对路径
if (file.getName().endsWith(".java")){
System.out.println(file.getAbsoluteFile());
}
}
if (file.isDirectory()){//如果本身也是目录
//System.out.println(file.getAbsoluteFile());
show(file);
}
}
}
public static void main(String[] args) throws IOException {
/*PrintWriter pw=new PrintWriter("aaa.txt","UTF-8");
pw.write("测试打印流");
pw.write("你好.....");
pw.close();*/
FileWriter fw=new FileWriter("bbb.txt",true);
fw.write("-------测试fileWriter");
fw.write("+++++++测试fileWriter");
fw.close();
}