想要实现文本文件的读和写操作,我们需要了解StreamWriter类和StreamReader类。StreamWriter是专门用来处理文本文件的类,可以方便地向文本文件中写入字符串。同时也负责重要的转换和处理向FileStream对象写入工作。
StreamReader是专门用来读取文本文件的类,StreamReader可以从底层Stream对象创建StreamReader对象的实例,而且也能指定编码规范参数。创建StreamReader对象后,它提供了许多用于读取和浏览字符数据的方法
package com;
import java.io.*;
public class ttt {
public static void main(String[] args) throws Exception {
//获取原来的图片的路劲
File file = new File("D:\\a");
//2. 上传后的路径
String img="D:\\img\\";
File imgFile=new File(img);
if (!imgFile.exists()){
imgFile.mkdir();//创建新目录
}
//获取 file中的 图片列表
File[] files=file.listFiles();
for (File file1 : files) {
//获取输入和输出流
// InputStream is=new FileInputStream(file1);
//使用缓冲流,也叫做包装流 读
InputStream is = new BufferedInputStream(new FileInputStream(file1));
//目标路径 (为解决 文件重名覆盖问题 ,可以使用UUID 或者 时间戳 (毫秒值))
String distImg=img+System.currentTimeMillis()+file1.getName();
//读和写的具体实现 写
//OutputStream os=new FileOutputStream(distImg);
OutputStream os=new BufferedOutputStream( new FileOutputStream(distImg));
byte[] buf =new byte[1024]; //通过字节数组提高读取效率
int len=0; //每次读取的长度 , 如果读取到文件末尾 该值等于-1代表结束v
while ((len=is.read())!=-1){
os.write(buf,0,len);
}
os.close();
is.close();
}
//创建 字符流 读和写的对象 , 读取 c盘 a.txt内容 ,通过 写的对象 再拷贝1份到 c盘
// BufferedReader reader =new BufferedReader(new FileReader("C:\\a\\a.txt"));//方法2的读
Reader reader = new BufferedReader(new FileReader(new File("c:\\a\\a.txt")));//方法1读
BufferedWriter writer= new BufferedWriter(new FileWriter("C:\\a\\b.txt"));
//读取文本有2种方式 ,方式1: 按照字符读取 ,方式2:每次读取1行
// 方式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();
}
}