BufferedReader
InputStreamReader
FileInputStream
DataInputStream
OutputStreamWriter1 这几个类有什么区别呢,分别怎么用呢,2 现我想向 D:\demosun\demosu.txt 这文件中写入一行文字,怎么实现呢
3 现我想把 D:\demosun\demosu.txt 这文件中的内容读出来 怎么实现呢
thanks
InputStreamReader
FileInputStream
DataInputStream
OutputStreamWriter1 这几个类有什么区别呢,分别怎么用呢,2 现我想向 D:\demosun\demosu.txt 这文件中写入一行文字,怎么实现呢
3 现我想把 D:\demosun\demosu.txt 这文件中的内容读出来 怎么实现呢
thanks
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class ReadAndWriteFile { public static void main(String[] args) {
//写文件
writeFile("文件路径", "文件内容");
//读文件
readFile("文件路径");
}
public static void readFile(String path){
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(""));
while(true){
String line = reader.readLine();
if(line == null){
break;
}
System.out.println(line + "\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void writeFile(String path, String content){
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(""));
writer.write(content);
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(writer != null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
实践:http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
import java.io.*;
public class WriterDemo {
public static void main(String args[]) throws IOException
{
//字符写入
File file=new File("d:"+File.separator+"demo.txt");
Writer writer=new FileWriter(file);
String str="hello world!";
writer.write(str);
writer.close();
//字符读取
File file1=new File("d:"+File.separator+"demo.txt");
Reader read=new FileReader(file1);
char[] ch=new char[(int)file1.length()];
read.read(ch, 0, (int) file1.length());
System.out.println(ch.toString());
read.close();
}
}
字节流在操作的时候是直接与文件本身关联,不使用缓冲区,字节直接存到文件中;字符流在操作的时候是通过缓冲区与文件操作,字符到缓冲区然后再到文件中,所以字符流中存在一个flush()方法来刷新缓冲区。
综合比较来讲,在传输或者在硬盘上保存的内容是以字节的形式存在的,所以字节流的操作较多,但是在操作中文的时候字符流比较好用。package cn.tsp2s.liu.liubao;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.util.logging.Level;
import java.util.logging.Logger;/**
*
* @author Administrator
*/
public class TestBufferedReader {
public static void main(String[] args){
FileReader in=null;
BufferedReader read=null;
String s=null;
BufferedWriter writer=null;
try {
in = new FileReader("d:\\java\\TestLeap.java");
read=new BufferedReader(in);
writer=new BufferedWriter(new FileWriter("d:\\java\\leap.txt"));
while ((s = read.readLine()) != null) {
// System.out.println(s);
writer.write(s);
//这里调用newline()方法是让它输出和读取的完全一致,理由不解释
writer.newLine();
//这里一定要调用flush()方法,如果不调用,文件中将会显示不全或者压根就不显示任何东西,理由不解释,你肯定知道
writer.flush();
}
} catch (FileNotFoundException ex) {
System.out.println("找不到指定文件!!");
}catch (IOException e) {
System.out.println("文件读取有误!");
}finally{
try {
writer.close();
read.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
}
字节流(以stream结尾)
InputStream
OutputStream
FileInputStream
FileOutputStream
DataInputStream
DataOutputStream
BufferedInputStream
BufferedOutputStream
printStream
字符流(以er结尾)
Reader
Writer
InputStreamReader
OutputStreamWriter
FileReader
FileWriter
BufferedReader
BufferedWriter
printWriter
RandomAccessFile 随机访问流