欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文件2

程序员文章站 2022-04-09 08:04:30
...

1、字符流

Winter:字符输出流父类

	write(int c);写入的是c的低16位
	write(char[] c);将char数组中的字符写入到文件
	write(String str);将字符串直接写入到文件中
	write(cahr[] c,int off,int length);写入,写多少个

Reader: 字符输入流父类

	int read();读取一个字符,将读取的内容保存在int型值低16位
	int read(char[] c);从文件中读取一个字符数组长度的字符,返回读取
	的字符数java默认使用unicode编码 

字符流底层依然是字节流

FileWriter:文件字符输出流

覆盖写

 @Test
	public void test01() throws IOException{
		FileWriter file=new FileWriter("a.txt");
		file.write("香港是中国的");
		file.close();
		System.out.println("写出成功");
	}

追加写

@Test    
public void test02() throws IOException{
	FileWriter file=new FileWriter("a.txt",true);
	file.write(",hahaha");
	file.close();
	System.out.println("写出成功");
}

FileReader:文件字符输入流

FileReader

@Test 	
	public void test03() throws IOException{
		FileReader file=new FileReader("a.txt");
		char[]c=new char[100];
		int length=file.read(c);
		file.close();		
		System.out.println(new String(c));
		System.out.println(length);//读取字符数
		System.out.println("读入成功");

转换流,可指定字符集,非节点流(能不能直接操作文件),实例化转换流,必须实例化一个字节流

OutputStreamWriter

@Test
	//测试写字符,指定字符集为utf-8
	public void test01() throws IOException{
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("b.txt"),"utf-8");
		osw.write("我爱中国");
		osw.close();
		System.out.println("写出成功");
	}

InputStreamReader

@Test
	//测试写字符,指定字符集为utf-8
	public void test02() throws IOException{
		InputStreamReader osw=new InputStreamReader(new FileInputStream("b.txt"),"utf-8");
		char[]c=new char[10];
		osw.read(c);
		System.out.println(new String(c));
		osw.close();
		System.out.println("写出成功");
	}

缓冲字符流

BufferedWriter

@Test
public void test01() throws IOException {
	BufferedWriter bw=new BufferedWriter(new FileWriter("c.txt"));
	bw.write("Hello 你好");
	bw.flush();
	bw.close();
}

BufferedReader

@Test
	public void test02() throws IOException {
		BufferedReader br=new BufferedReader(new FileReader("./src/com/Demo03.java"));
		String str="";
		//String str =br.readLine();//读一行
		while((str=br.readLine())!=null){
			System.out.println(str);
		}		
		br.close();

打印流(字节打印流,字符打印流)

字符打印流

@Test
public void test01() throws FileNotFoundException {
	PrintWriter pw1=new PrintWriter("pw.txt");
	pw1.println("中国人");
	pw1.close();
}

字节打印流

@Test	
public void test02() throws FileNotFoundException {
	PrintStream pw1=new PrintStream("ps.txt");
	pw1.println("京东");
	pw1.close();
}

测试系统输出和输入

@Test
public void test03() throws FileNotFoundException {
	//System.setOut(new PrintStream("sys.txt"));//控制打印位置
	System.out.println("Hello world");//打印流 打印到控制台	PrintStream

	Scanner scan=new Scanner(System.in);//InputStream 输入流
}

读取控制台内容

@Test	
public void test04() throws IOException {
	BufferedInputStream bis=new BufferedInputStream(System.in);
	int i=-1;
	System.out.println("请输入");
	while((i=bis.read())!=-1){
		System.out.println((char)i);
	}		
}

输出到控制台

@Test	
public void test05() throws IOException {
	PrintWriter pw1=new PrintWriter(System.out);
	pw1.println("中国人");
	pw1.close();
}

复制

@Test
public void test06() throws IOException {
	copy(new File("b.txt"),new File("a.txt"));
}
public void copy(File a,File b) throws IOException{
	BufferedReader br=new BufferedReader(new FileReader(a));
	BufferedWriter bw=new BufferedWriter(new FileWriter(b));	
	String str="";
	while((str=br.readLine())!=null){
		bw.write(str);
	}
	br.close();
	bw.close();
}

随堂练习:
1、模拟保存系统日志,将日志信息分行输出到日志文件
提示:使用PrintWriter
2、使用字符缓冲流实现文本文件的复制
3、读取控制台数据,将数据使用utf-8编码写到指定的文件中

相关标签: 文件