本文转载自很多作者
JAVA 中的IO流
1.首先得搞清楚流的概念:
一个流,它有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。因此我们可以把流分两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。
两个概念:
结点流(node stream)
特点:直接从指定的位置(如磁盘文件或内存区域)读或写
过滤器(filters)
除结点流之外的流都是过滤器
特点:往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流的原理也类似。
我们知道,io里面那些大大小小的关于文件操作的类很多,而且需要传入的参数可能是物理文件,也可能是某个对象。搞清上面两个概念后我们就能很清楚的知道在new一个文件类时该传什么样的参数。下面介绍流的另外一种分类,它是基于操作对象的类型分的。
流分类:
1.Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new
JAVA字节流
FileInputStream和FileOutputStream
这两个类属于结点流,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流。如:
FileInputStream infile = new FileInputStream("myfile.dat");
FileOutputStream outfile = new FileOutputStream("results.dat");
要注意的是,构造FileInputStream, 对应的文件必须存在并且是可读的,而构造FileOutputStream时,如输出文件已存在,则必须是可覆盖的。
BufferedInputStream和BufferedOutputStream
它们是过滤器流,其作用是提高输入输出的效率。
DataInputStream和DataOutputStream
这两个类创建的对象分别被称为数据输入流和数据输出流。这是很有用的两个流,它们允许程序按与机器无关的风格读写Java数据。所以比较适合于网络上的数据传输。这两个流也是过滤器流,常以其它流如InputStream或OutputStream作为它们的输入或输出。
Java的字符流
字符流主要是用来处理字符的。Java采用16位的Unicode来表示字符串和字符,对应的字符流按输入和输出分别称为readers和writers。
两种不现导向的stream之间的转换
InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream
例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedReader和BufferedWriter
这两个类对应的流使用了缓冲,能大大提高输入输出的效率。这两个也是过滤器流,常用来对InputStreamReader和OutputStreamWriter进行处理。
Java代码
-
import java.io.*;
-
public class Echo {
-
public static void main(String[] args) {
-
BufferedReader in =
-
new BufferedReader(
-
new InputStreamReader(System.in));
-
String s;
-
try {
-
while((s = in.readLine()).length() != 0)
-
System.out.println(s);
-
// An empty line terminates the program
-
} catch(IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
import java.io.*;public class Echo { public static void main(String[] args) { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String s; try { while((s = in.readLine()).length() != 0) System.out.println(s); // An empty line terminates the program } catch(IOException e) { e.printStackTrace(); } }}
该程序接受键盘输入并回显。
对BufferedReader类,该类的readLine()方法能一次从流中读入一行,但对于BufferedWriter类,就没有一次写一行的方法,所以若要向流中一次写一行,可用PrintWriter类将原来的流改造成新的打印流,PrintWriter类有一个方法println(),能一次输出一行。如:
Java代码
-
............
-
PrintWriter out = new PrintWriter(new BufferedWriter(
-
new FileWriter("D:\javacode\test.txt")));
-
out.println("Hello World!");
-
out.close();
-
............
............PrintWriter out = new PrintWriter(new BufferedWriter( new FileWriter("D:\javacode\test.txt")));out.println("Hello World!");out.close();............
相关示例:
1,与控制台相关。的读入/写出。 实现了字符串的复制。
Java代码
-
import java.io.*;
-
public class TextRead{
-
-
public static void main(String[] args){
-
BufferedReader bf = null;/*BufferedReader相当于一个大桶,其实就是内存,这里实现了大量大量的读写 ,而不是读一个字节或字符就直接写如硬盘,加强了对硬盘的保护。*/
-
try{
-
while(true){ // while(true){}循环保证程序不会结束
-
-
bf = new BufferedReader(new InputStreamReader(System.in));
-
/*System.in 为标准输入,System.out为标准输出*/
-
/*InputStreamReader用语将字节流到字符流的转化,这也就是处理流了
-
*在这里相当与2个管道接在System.in与程序之间。
-
*readLine()方法功能比较好用,也就通过处理流来实现更好功能。
-
**/
-
String line = bf.readLine();
-
System.out.println(line);
-
}
-
}catch(Exception e){
-
e.printStackTrace();
-
}finally{
-
//一定要关闭流,用完后。最好放在
-
-
filally 里面。
-
try{
-
if(bf!=null){
-
bf.close();
-
}
-
}catch(Exception e){
-
e.printStackTrace();
-
}
-
-
}
-
-
}
-
-
}
import java.io.*;public class TextRead{public static void main(String[] args){ BufferedReader bf = null;/*BufferedReader相当于一个大桶,其实就是内存,这里实现了大量大量的读写 ,而不是读一个字节或字符就直接写如硬盘,加强了对硬盘的保护。*/ try{ while(true){ // while(true){}循环保证程序不会结束 bf = new BufferedReader(new InputStreamReader(System.in)); /*System.in 为标准输入,System.out为标准输出*/ /*InputStreamReader用语将字节流到字符流的转化,这也就是处理流了 *在这里相当与2个管道接在System.in与程序之间。 *readLine()方法功能比较好用,也就通过处理流来实现更好功能。 **/ String line = bf.readLine(); System.out.println(line); } }catch(Exception e){ e.printStackTrace(); }finally{ //一定要关闭流,用完后。最好放在filally 里面。 try{ if(bf!=null){ bf.close(); } }catch(Exception e){ e.printStackTrace(); } } }}
2,与文件 相关的 读写。 实现了文件的复制。
Java代码
-
import java.io.*;
-
public class TextRead{
-
-
public static void main(String[] args){
-
File fin,fout;
-
BufferedReader bf = null;
-
PrintWriter pw = null;
-
try{
-
fin = new File("zzc.txt"); //注意文件与程序都要在同一个文件夹下。zzc.txt为要被复制的文件。
-
-
fout = new File("copyzzc.txt"); //如果没有会自动创建。
-
-
bf = new BufferedReader(new FileReader(fin));
-
-
pw = new PrintWriter(fout); //PrintWriter为打印流,也可以使用BufferedWriter.
-
String line = bf.readLine();
-
while(line!=null){
-
pw.println(line);
-
-
line = bf.readLine();
-
}
-
-
-
}catch(Exception e){
-
e.printStackTrace();
-
-
}finally{
-
try{
-
//关闭 文件。
-
if(bf!=null){
-
bf.close();
-
bf = null;
-
}
-
if(pw!=null){
-
pw.close();
-
pw = null;
-
}
-
}catch(Exception e){
-
e.printStackTrace();
-
}
-
}
-
-
}
-
-
}
Java中对文件的操作
java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。
1。新建目录
<%@ page contentType="text/html;charset=gb2312"%>
<%
String filePath="c:/aaa/";
filePath=filePath.toString();//中文转换
java.io.File myFilePath=new java.io.File(filePath);
if(!myFilePath.exists())
myFilePath.mkdir();
%>
2。新建文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*" %>
<%
String filePath="c:/哈哈.txt";
filePath=filePath.toString();
File myFilePath=new File(filePath);
if(!myFilePath.exists())
myFilePath.createNewFile();
FileWriter resultFile=new FileWriter(myFilePath);
PrintWriter myFile=new PrintWriter(resultFile);
String strContent = "中文测试".toString();
myFile.println(strContent);
resultFile.close();
%>
3。删除文件
<%@ page contentType="text/html;charset=gb2312"%>
<%
String filePath="c:/支出证明单.xls";
filePath=filePath.toString();
java.io.File myDelFile=new java.io.File(filePath);
myDelFile.delete();
%>
4。文件拷贝
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
int bytesum=0;
int byteread=0;
file://读到流中
InputStream inStream=new FileInputStream("c:/aaa.doc");
FileOutputStream fs=new FileOutputStream( "d:/aaa.doc");byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
inStream.close();
%>
5。整个文件夹拷贝
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*" %>
<%String url1="C:/aaa";
String url2="d:/java/";
(new File(url2)).mkdirs();
File[] file=(new File(url1)).listFiles();
for(int i=0;i<file.length;i++){
if(file[i].isFile()){
file[i].toString();
FileInputStream input=new FileInputStream(file[i]);
FileOutputStream output=new FileOutputStream(url2+"/"+(file[i].getName()).toString());
byte[] b=new byte[1024*5];
int len;
while((len=input.read(b))!=-1){
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
}
%>
6。文件下载
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
String fileName = "zsc104.swf".toString();
//读到流中
InputStream inStream=new FileInputStream("c:/zsc104.swf");
//设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename="" + fileName + """);
//循环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
%>
7。数据库字段中的文件下载
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
int bytesum=0;
int byteread=0;
//打开数据库
ResultSet result=null;
String Sql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//取得数据库中的数据
Sql="select * from t_local_zhongzhuan ";
result=DbaObj.ExecuteQuery(Sql);
result.next();
file://将数据库中的数据读到流中
InputStream inStream=result.getBinaryStream("content");
FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");
byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
%>
8。把网页保存成文件
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%
URL stdURL = null;
BufferedReader stdIn = null;
PrintWriter stdOut = null;
try {
stdURL = new URL("http://www.163.com");
}
catch (MalformedURLException e) {
throw e;
}
try {
stdIn = new BufferedReader(new InputStreamReader(stdURL.openStream()));
stdOut = new PrintWriter(new BufferedWriter(new FileWriter("c:/163.html")));
}
catch (IOException e) {
}
/***把URL指定的页面以流的形式读出,写成指定的文件***/
try {
String strHtml = "";
while((strHtml = stdIn.readLine())!=null) {
stdOut.println(strHtml);
}
}
catch (IOException e) {
throw e;
}
finally {
try {
if(stdIn != null)
stdIn.close();
if(stdOut != null)
stdOut.close();
}
catch (Exception e) {
System.out.println(e);
}
}
%>
9。直接下载网上的文件
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%
int bytesum=0;
int byteread=0;
URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif");
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs=new FileOutputStream( "c:/abc.gif");
byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
%>
10。按行读文件
<%@ page contentType="text/html; charset=gb2312" %> <%@ page import="java.io.*" %> <% FileReader myFileReader=new FileReader("c:/哈哈.txt"); BufferedReader myBufferedReader=new BufferedReader(myFileReader); String myString=null; String resultString=new String(); while((myString=myBufferedReader.readLine())!=null) { resultString=resultString+myString+"<br>"; } out.println(resultString); myFileReader.close(); %>
Java中各种文件类型操作的代码与详细文件IO讲解
首先我们来看代码:
//几乎所有常用文件操作的示例代码
import java.io.*;
public class TestIO{
public static void main(String[] args)
throws IOException{
//1.以行为单位从一个文件读取数据
BufferedReader in =
new BufferedReader(
new FileReader("F://nepalon//TestIO.java"));
String s, s2 = new String();
while((s = in.readLine()) != null)
s2 += s + "/n";
in.close();
//1b. 接收键盘的输入
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Enter a line:");
System.out.println(stdin.readLine());
//2. 从一个String对象中读取数据
StringReader in2 = new StringReader(s2);
int c;
while((c = in2.read()) != -1)
System.out.println((char)c);
in2.close();
//3. 从内存取出格式化输入
try{
DataInputStream in3 =
new DataInputStream(
new ByteArrayInputStream(s2.getBytes()));
while(true)
System.out.println((char)in3.readByte());
}
catch(EOFException e){
System.out.println("End of stream");
}
//4. 输出到文件
try{
BufferedReader in4 =
new BufferedReader(
new StringReader(s2));
PrintWriter out1 =
new PrintWriter(
new BufferedWriter(
new FileWriter("F://nepalon// TestIO.out")));
int lineCount = 1;
while((s = in4.readLine()) != null)
out1.println(lineCount++ + ":" + s);
out1.close();
in4.close();
}
catch(EOFException ex){
System.out.println("End of stream");
}
//5. 数据的存储和恢复
try{
DataOutputStream out2 =
new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("F://nepalon// Data.txt")));
out2.writeDouble(3.1415926);
out2.writeChars("/nThas was pi:writeChars/n");
out2.writeBytes("Thas was pi:writeByte/n");
out2.close();
DataInputStream in5 =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("F://nepalon// Data.txt")));
BufferedReader in5br =
new BufferedReader(
new InputStreamReader(in5));
System.out.println(in5.readDouble());
System.out.println(in5br.readLine());
System.out.println(in5br.readLine());
}
catch(EOFException e){
System.out.println("End of stream");
}
//6. 通过RandomAccessFile操作文件
RandomAccessFile rf =
new RandomAccessFile("F://nepalon// rtest.dat", "rw");
for(int i=0; i<10; i++)
rf.writeDouble(i*1.414);
rf.close();
rf = new RandomAccessFile("F://nepalon// rtest.dat", "r");
for(int i=0; i<10; i++)
System.out.println("Value " + i + ":" + rf.readDouble());
rf.close();
rf = new RandomAccessFile("F://nepalon// rtest.dat", "rw");
rf.seek(5*8);
rf.writeDouble(47.0001);
rf.close();
rf = new RandomAccessFile("F://nepalon// rtest.dat", "r");
for(int i=0; i<10; i++)
System.out.println("Value " + i + ":" + rf.readDouble());
rf.close();
}
}
关于代码的解释(以区为单位):
1区中,当读取文件时,先把文件内容读到缓存中,当调用in.readLine()时,再从缓存中以字符的方式读取数据(以下简称"缓存字节读取方式")。
1b区中,由于想以缓存字节读取方式从标准IO(键盘)中读取数据,所以要先把标准IO(System.in)转换成字符导向的stream,再进行BufferedReader封装。
2区中,要以字符的形式从一个String对象中读取数据,所以要产生一个StringReader类型的stream。
4区中,对String对象s2读取数据时,先把对象中的数据存入缓存中,再从缓冲中进行读取;对TestIO.out文件进行操作时,先把格式化后的信息输出到缓存中,再把缓存中的信息输出到文件中。
5区中,对Data.txt文件进行输出时,是先把基本类型的数据输出屋缓存中,再把缓存中的数据输出到文件中;对文件进行读取操作时,先把文件中的数据读取到缓存中,再从缓存中以基本类型的形式进行读取。注意in5.readDouble()这一行。因为写入第一个writeDouble(),所以为了正确显示。也要以基本类型的形式进行读取。
6区是通过RandomAccessFile类对文件进行操作。
讲解部分:
Input和Output
1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型:
1.1 以字节为导向的stream
以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型:
1) input stream:
1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
2) StringBufferInputStream:把一个String对象作为InputStream
3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
4) PipedInputStream:实现了pipe的概念,主要在线程中使用
5) SequenceInputStream:把多个InputStream合并为一个InputStream
2) Out stream
1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
2) FileOutputStream:把信息存入文件中
3) PipedOutputStream:实现了pipe的概念,主要在线程中使用
4) SequenceOutputStream:把多个OutStream合并为一个OutStream
1.2 以Unicode字符为导向的stream
以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型:
1) Input Stream
1) CharArrayReader:与ByteArrayInputStream对应
2) StringReader:与StringBufferInputStream对应
3) FileReader:与FileInputStream对应
4) PipedReader:与PipedInputStream对应
2) Out Stream
1) CharArrayWrite:与ByteArrayOutputStream对应
2) StringWrite:无与之对应的以字节为导向的stream
3) FileWrite:与FileOutputStream对应
4) PipedWrite:与PipedOutputStream对应
以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,字是在操作时的导向不同。如CharArrayReader:和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。
1.3 两种不现导向的stream之间的转换
InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream。
2. stream添加属性
2.1 "为stream添加属性"的作用
运用上面介绍的Java中操作IO的API,我们就可完成我们想完成的任何操作了。但通过FilterInputStream和FilterOutStream的子类,我们可以为stream添加属性。下面以一个例子来说明这种功能的作用。
如果我们要往一个文件中写入数据,我们可以这样操作:
FileOutStream fs = new FileOutStream("test.txt");
然后就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是,如果我们想实现"先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中"的功能时,上面的API就没有一个能满足我们的需求了。但是通过FilterInputStream和FilterOutStream的子类,为FileOutStream添加我们所需要的功能。
2.2 FilterInputStream的各种类型
2.2.1 用于封装以字节为导向的InputStream
1) DataInputStream:从stream中读取基本类型(int、char等)数据。
2) BufferedInputStream:使用缓冲区
3) LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()和setLineNumber(int)
4) PushbackInputStream:很少用到,一般用于编译器开发
2.2.2 用于封装以字符为导向的InputStream
1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader,否则使用DataInputStream
2) BufferedReader:与BufferedInputStream对应
3) LineNumberReader:与LineNumberInputStream对应
4) PushBackReader:与PushbackInputStream对应
2.3 FilterOutStream的各种类型
2.2.3 用于封装以字节为导向的OutputStream
1) DataIOutStream:往stream中输出基本类型(int、char等)数据。
2) BufferedOutStream:使用缓冲区
3) PrintStream:产生格式化输出
2.2.4 用于封装以字符为导向的OutputStream
1) BufferedWrite:与对应
2) PrintWrite:与对应
3. RandomAccessFile
1) 可通过RandomAccessFile对象完成对文件的读写操作
2) 在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写
3) 可以直接跳到文件中指定的位置
原理:BufferedReader会一次性从物理流中读取8k(默认数值,可以设置)字节内容到内存,如果外界有请求,就会到这里存取,如果内存里没有才到物理流里再去读。即使读,也是再8k。
而直接读物理流,是按字节来读。
对物理流的每次读取,都有IO操作。IO操作是最耗费时间的。
BufferedReader就是减少了大量IO操作,而为你节省了时间。
简单的说,一次IO操作,读取一个字节也是读取,读取8k个字节也是读取,两者花费时间相差不多。而一次IO的来回操作却要耗费大量时间。
好比是一辆大型汽车(设装100人),要去车站接人到公司,接一个人也是接,接100个人也是接,而时间一样。显然,接100个人最划算。
物理流就是一次一个字节(一个人)
Buffered就是一次8k个字节(100个人)
对于读取定长字节文件,当然BufferedReader更快了!
Java代码
-
-
-
import java.io.*;
-
public class Test11 {
-
private static BufferedReader br = null;
-
private static File file = null;
-
private static BufferedWriter bw = null;
-
public static void main(String[] args) {
-
String b = null;
-
file = new File("D:\\abc.txt");
-
if (!file.exists() != false) {
-
try {
-
file.createNewFile();
-
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
try {
-
bw = new BufferedWriter(new FileWriter(file));
-
FileReader fr = new FileReader("D:\\Log.txt");
-
br = new BufferedReader(fr);
-
while ((b = br.readLine()) != null) {
-
System.out.println(b);
-
bw.write(b);//输出字符串
-
bw.newLine();//换行
-
bw.flush();
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}finally {
-
try {
-
br.close();
-
//bw.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
-
-
}
-
import java.io.*;
-
-
public class test {
-
-
/**
-
* @param args
-
*/
-
public static void main(String[] args) {
-
String path="e://a.txt";
-
try {
-
FileWriter fw=new FileWriter(path,true);
-
PrintWriter pw=new PrintWriter(fw);
-
pw.println("世界");
-
pw.close();
-
//bw.close();
-
fw.close();
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
}
import java.io.*;public class test { /** * @param args */public static void main(String[] args) { String path="e://a.txt"; try {FileWriter fw=new FileWriter(path,true);PrintWriter pw=new PrintWriter(fw); pw.println("世界"); pw.close();//bw.close(); fw.close(); } catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace(); } }}
2.以BufferedWriter来实现写入
Java代码
-
import java.io.*;
-
-
public class test {
-
/** * @param args */
-
public static void main(String[] args) {
-
String path="e://a.txt";
-
try {
-
FileWriter fw=new FileWriter(path,true);
-
BufferedWriter bw=new BufferedWriter(fw);
-
bw.newLine();
-
bw.write("Hello");
-
bw.newLine();
-
bw.write("世界");
-
bw.close();
-
fw.close();
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
import java.io.*; public class test { /** * @param args */ public static void main(String[] args) { String path="e://a.txt"; try { FileWriter fw=new FileWriter(path,true); BufferedWriter bw=new BufferedWriter(fw); bw.newLine(); bw.write("Hello"); bw.newLine(); bw.write("世界"); bw.close(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Java代码
-
}
-
读文件用BufferedReader br = new BufferedReader( new FileReader(new File("e://a.txt")));
-
br.readLine();//一行一行的读