1.一行一行地读取文件中的内容
package com.ydlclass.feature;
import org.junit.Test;
import java.io.*;
import java.util.Random;
public class IOTest {
String tarPath;
public String getTarPath() {
return tarPath;
}
public void setTarPath(String tarPath) {
this.tarPath = tarPath;
}
@Test
//处理流的使用,比如想一行一行的读取数据
public void testHandlerStream() throws IOException {
Reader inputStream1 = new FileReader("D:\\Product.log");
BufferedReader bufferedReader = new BufferedReader(inputStream1);//处理流,实现按行读取文件
Writer outputStream1 = new FileWriter("E:\\Product.log");
BufferedWriter bufferedWriter = new BufferedWriter(outputStream1);//处理流,实现按行输出取文件
long start = System.currentTimeMillis();
byte[] bytes = new byte[1024 * 1024];//将每次运货箱的大小提升;这样只需要进行比较少的i/o操作就可以完成;
// 如果还想优化新能,那么可以使用多线程;或者使用nio
char[] chs = new char[1024 * 1024];
String content; //注意方法的返回值是一个怎样的类型
while ((content = bufferedReader.readLine()) != null) {
System.out.println(content);
System.out.println("______________");//这样可以证明其是一行一行的读取文件的
bufferedWriter.write(chs);
}
long end = System.currentTimeMillis();
System.out.println("单字节搬运:" + (end - start));
bufferedReader.close();//关闭字符流资源
bufferedWriter.close();
}
}
2.将输入的字符串输出至指定的文本中(由于junit不支持控制台输入),于是换成main方法
package com.ydlclass.feature;
import org.junit.Test;
import java.io.*;
import java.util.Random;
import java.util.Scanner;
public class IOTest {
//使用处理流直接将输入的字符串输出到文本之中
public static void main(String[] args) throws IOException {
Writer outputStream1 = new FileWriter("E:\\Product.log");
BufferedWriter bufferedWriter = new BufferedWriter(outputStream1);//处理流,实现按行输出取文件
char[] chs = new char[1024 * 1024];
while(true){
Scanner scanner = new Scanner(System.in);
String content = scanner.next();
bufferedWriter.write(content);//将内容刷新至文本中
bufferedWriter.newLine();//每次输入完会换行
bufferedWriter.flush();//每次写完之后舒心亦喜爱
}
}
}