Java SE 095 Java字符流详解 续

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

Java SE 095 Java字符流详解 续

1.FileWriter

(1)FileWriter创建一个可以写文件的Writer类。FileWriter继承于OutputStreamWriter。它最常用的构造方法如下:
FileWriter(String filePath);
FileWriter(String filePath,boolean append);
FileWriter(File fileObj)
append:如果为true,则将字节写入文本末尾处,而不是写入文件开始处。
在这里插入图片描述

1.1将字符串输出到字符数组

package com.javareview.io.stream.filewriter;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 将字符串输出到字符数组
 */
public class FileWriterTest {
	public static void main(String[] args) throws IOException {
		String str = "hello world welcome nihao";
		//FileWriter操纵的是字符或者是字符数组,字符串与字符数组是两个不同的对象,可以将其转换成字符数组
		char[] buffer = new char[str.length()];
		//将字符串儿里面的内容复制到buffer数组
		str.getChars(0, str.length(), buffer, 0);
		FileWriter writer = new FileWriter("file2.txt");
		for(int i = 0 ; i < buffer.length; i++){
			writer.write(buffer[i]);
		}
		writer.close();
	}
}

在这里插入图片描述

1.2字符数组读取

package com.javareview.io.stream.filewriter;

import java.io.CharArrayReader;
import java.io.IOException;

public class CharArrayReaderTest {
	public static void main(String[] args) throws IOException {
		String tmp = "Liu Manlin I love you!";
		char[] ch = new char[tmp.length()];
		tmp.getChars(0, tmp.length(), ch, 0);
		
		CharArrayReader car = new CharArrayReader(ch);
		int i;
		while(-1!=(i = car.read())){
			System.out.println((char)i);
		}
	}
}

2.随机访问文件类

注意:这个类既能读,又能写!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.javareview.io.stream.randomaccessfile;

import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileTest {
	public static void main(String[] args) throws IOException {
		Person p = new Person(1,"Jie Lin",160);
		RandomAccessFile raf = new RandomAccessFile("test.txt","rw");
		p.write(raf);
		
		Person p1 = new Person();
		raf.seek(0);//让读的位置重新回到文件开头
		p1.read(raf);
		System.out.println(p1.id+"    "+p1.name+"    "+p1.height);
	}
}

class Person{
	int id;
	String name;
	double height;
	
	public Person(){
		
	}
	
	public Person(int id,String name,double height){
		this.id = id;
		this.name = name;
		this.height = height;
	}
	/**
	 * 不管是读还是写,它们都接收一个RandomAccessFile这样一个对象
	 * 如果是写这样一个对象,就将其写入一个RandomAccessFile文件里面
	 * 如果要是读的话,就从RandomAccessFile所对应的文件里面把信息再给读回来,但是不管是读还是写,要
	 * 注意的一点就是它们读写内容的顺序一定要一致才可以。因为写入文件之后,都是以bit的形式存放成二进制文件,
	 * 所以当读取的时候,写的时候写进去的内容占多少位,那么读就需要按多少位读取出来
	 * @param raf
	 * @throws IOException
	 */
	public void write(RandomAccessFile raf) throws IOException{
		raf.writeInt(id);
		raf.writeUTF(name);
		raf.writeDouble(height);
	}
	
	public void read(RandomAccessFile raf) throws IOException{
		this.id = raf.readInt();
		this.name = raf.readUTF();
		this.height = raf.readDouble();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值