字符串读写,需要注意编码
装载也有两种方式,单个字符+字符数组
字符流需要注意冲刷缓冲区的,虽然close释放资源的时候会先冲刷
'读取数据 read'
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("F:\\生活\\a.txt");
InputStreamReader isr = new InputStreamReader(fis,"gbk");
//单个字符方式
/*int ch;
while((ch=isr.read())!=-1){
System.out.print((char)ch);
}*/
//字符数组方式
int ch;
char[] c = new char[1024];
while((ch=isr.read(c))!=-1){
System.out.println(new String(c,0,ch));
}
}
'写数据 write'
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("F:\\生活\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
//字符
osw.write(97);
//字符数组
char[] chs ={'a','b'};
osw.write(chs);
//字符串
osw.write("dsdhb大数据");
osw.write("代表说句话大数据",0,4);
osw.flush();
osw.close();
fos.close();
}
案例
'注意目前的文件是破坏了压缩'
'所以复制出来的文件可能会变大'
'(ch=isr.read(c))!=-1'
'osw.write(c,0,ch);'
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("F:\\生活\\a-副本.mp4");
InputStreamReader isr = new InputStreamReader(fis);
FileOutputStream fos = new FileOutputStream("F:\\生活\\a-副本2.mp4");
OutputStreamWriter osw = new OutputStreamWriter(fos);
int ch;
char[] c = new char[1024 * 200];
while((ch=isr.read(c))!=-1){
osw.write(c,0,ch);
}
osw.close();
isr.close();
}
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("F:\\生活\\a-副本.mp4");
FileWriter fw = new FileWriter("F:\\生活\\a-副本3.mp4");
/*int ch;
char[] c = new char[1024 * 200];
while((ch=fr.read(c))!=-1){
fw.write(c,0,ch);
}*/
int ch;
while((ch=fr.read())!=-1){
fw.write(ch);
}
System.out.println("代码运行结束");
fw.close();
fr.close();
}
字符缓冲流
'new BufferedReader(fr)'
public static void main(String[] args) throws Exception {
/*FileWriter fw = new FileWriter("F:\\生活\\a.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("代码执行结束,");
System.out.println("代码执行结束");
bw.close();
fw.close();*/
FileReader fr = new FileReader("F:\\\\生活\\\\a.txt");
BufferedReader br = new BufferedReader(fr);
int ch;
char[] c = new char[1024 * 200];
while((ch=br.read(c))!=-1){
System.out.println(new String(c,0,ch));
}
br.close();
fr.close();
System.out.println("==========");
}
'最常用的方式,最好掌握'
public static void main(String[] args) throws Exception {
//字符缓冲输入流
BufferedReader br = new BufferedReader(new FileReader("F:\\生活\\b.txt"));
//字符缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\生活\\a.txt"));
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
System.out.println("==========");
}
IO流总结