txt自动保存为ANSI码我用的是UTF-8,所以更改否则乱码
复制d盘下work目录下30目录下Buffer.txt文件(包括文件内容)
package com.sy.InputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
public class Demo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
founc01();
founc02();
founc03();
founc04();
founc05();
}
//高速缓冲 字符编写
public static void founc01() throws IOException{
BufferedReader bufferedReader=new BufferedReader(new FileReader("D:\\work\\30\\Buffer.txt"));
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter("D:\\work\\30\\Buffer1.txt"));
int len;
while((len=bufferedReader.read())!=-1){
bufferedWriter.write(len);
}
bufferedReader.close();
bufferedWriter.close();
}
//高速缓冲 字符串编写
public static void founc02() throws IOException{
BufferedReader bufferedReader=new BufferedReader(new FileReader("D:\\work\\30\\Buffer.txt"));
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter("D:\\work\\30\\Buffer2.txt"));
String line=null;
while((line=bufferedReader.readLine())!=null){//.readLine()读取一个文本行
bufferedWriter.write(line);
bufferedWriter.newLine();//换行
}
bufferedReader.close();
bufferedWriter.close();
}
//高速缓冲 字符数组编写
public static void founc03() throws IOException{
BufferedReader bufferedReader=new BufferedReader(new FileReader("D:\\work\\30\\Buffer.txt"));
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter("D:\\work\\30\\Buffer3.txt"));
int len;
char[] cs=new char[1024];
while((len=bufferedReader.read(cs))!=-1){
bufferedWriter.write(cs,0,len);//写入字符数组某部分,0是索引,len是长度。不写如果字符数组内容没有1024个会制造一些空格填充从而文件大小改变
}
bufferedReader.close();
bufferedWriter.close();
}
//普通 字符编写
public static void founc04() throws IOException{
FileReader fileReader=new FileReader("D:\\work\\30\\Buffer.txt");
FileWriter fileWriter=new FileWriter("D:\\work\\30\\Buffer4.txt");
int len;
while((len=fileReader.read())!=-1){
fileWriter.write(len);
}
fileReader.close();
fileWriter.close();
}
//普通 字符数组编写
public static void founc05() throws IOException{
FileReader fileReader=new FileReader("D:\\work\\30\\Buffer.txt");
FileWriter fileWriter=new FileWriter("D:\\work\\30\\Buffer5.txt");
int len;
char[] cs=new char[1024];
while((len=fileReader.read(cs))!=-1){
fileWriter.write(cs, 0, len);
}
fileReader.close();
fileWriter.close();
}
}
转换流(将字节转字符)
写入和读出
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class TransitionDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
func01();
func02(func01());//传入编码
}
public static String func01() throws IOException{
File file=new File("D:\\work\\10\\20\\java.txt");
FileOutputStream in=new FileOutputStream(file);
OutputStreamWriter ir=new OutputStreamWriter(in, "utf-8");//以utf-8编码写入
String ed= ir.getEncoding();//获取写入编码utf-8
BufferedWriter bw=new BufferedWriter(ir);
bw.write("你好我是好人");
bw.write("\r\n");//换行
bw.write("我叫依梦");
bw.close();
ir.close();
in.close();
return ed;
}
public static void func02(String ed) throws IOException{
File file=new File("D:\\work\\10\\20\\java.txt");
FileInputStream in=new FileInputStream(file);
InputStreamReader ir=new InputStreamReader(in, ed);//以utf-8读出
BufferedReader br=new BufferedReader(ir);
String str=br.readLine();
String str1= br.readLine();
System.out.println(str);
System.out.println(str1);
br.close();
ir.close();
in.close();
}
}
写入对象和读出对象
定义一个Person类
import java.io.Serializable;
public class Person implements Serializable{//Serializable序列化接口
private String name;
private transient Double slo;//transient不被序列化
private int age;
public Person(String name, double slo, int age) {
super();
this.name = name;
this.slo = slo;
this.age = age;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", slo=" + slo + ", age=" + age + "]";
}
}
利用将序列化的对象类流写盘在读出
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class ObjDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
func01();
func02();
}
//序列化person
public static void func01() throws IOException{
File file=new File("D:\\work\\10\\20\\oos.txt");
OutputStream os=new FileOutputStream(file);
ObjectOutputStream oos=new ObjectOutputStream(os);
Person p1=new Person("小明", 5000, 20);
Person p2=new Person("小红",4999,44);
//list集合
List<Person> list=new ArrayList<>();
list.add(p1);
list.add(p2);
oos.writeObject(list);
//关闭流
oos.close();
os.close();
}
//反序列化person
public static void func02() throws IOException, ClassNotFoundException{
File file=new File("D:\\work\\10\\20\\oos.txt");
InputStream is=new FileInputStream(file);
ObjectInputStream ois=new ObjectInputStream(is);
Object oj=ois.readObject();
List<Person> list=(List<Person>) oj;
for(Person st:list){
System.out.println(st);
}
//关闭流
ois.close();
is.close();
}
}
Properties(键值对读写)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
func01();
func02();
func03();
}
//在properties文件中写入
public static void func01() throws IOException{
File file=new File("D:\\work\\20\\hello.java\\pp.properties");
OutputStream fos=new FileOutputStream(file);
Properties properties=new Properties();
properties.setProperty("小红", "18岁");//造数据
properties.setProperty("小明", "20岁");//造数据
String str=properties.getProperty("小明");
System.out.println(str);//测试数据
properties.store(fos, "abc");//写入properties文件中并给abc注释 默认会加入时间
fos.close();
}
public static void func02() throws IOException{
File file=new File("D:\\work\\20\\hello.java\\pp.properties");
InputStream is=new FileInputStream(file);
Properties properties=new Properties();
properties.load(is);//加载properties文件
Set<String> st=properties.stringPropertyNames();// 返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
Iterator<String> it=st.iterator();//set集合的迭代器遍历
while(it.hasNext()){
String str= it.next();
System.out.println(str+"="+properties.getProperty(str));
}
is.close();
}
public static void func03() throws IOException{
File file=new File("D:\\work\\20\\hello.java\\pp.properties");
InputStream is=new FileInputStream(file);
Properties properties=new Properties();
properties.load(is);
Set<String> st=properties.stringPropertyNames();
for(String s:st){//set集合的增强for循环遍历
System.out.println(s+"="+properties.getProperty(s));
}
is.close();
}
}