﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-wjywilliam-随笔分类-Java</title><link>http://www.blogjava.net/wjywilliam/category/17471.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 11 Mar 2007 13:56:46 GMT</lastBuildDate><pubDate>Sun, 11 Mar 2007 13:56:46 GMT</pubDate><ttl>60</ttl><item><title>眀海棠文集之数据格式化1.0</title><link>http://www.blogjava.net/wjywilliam/archive/2006/11/20/82327.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Mon, 20 Nov 2006 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/wjywilliam/archive/2006/11/20/82327.html</guid><wfw:comment>http://www.blogjava.net/wjywilliam/comments/82327.html</wfw:comment><comments>http://www.blogjava.net/wjywilliam/archive/2006/11/20/82327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjywilliam/comments/commentRss/82327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjywilliam/services/trackbacks/82327.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 眀海棠文集之数据格式化1.0														 																										java.text 												包允许通过与特定语言无关的方式格式化文本消息、日期和数值。																																				1.										      ...&nbsp;&nbsp;<a href='http://www.blogjava.net/wjywilliam/archive/2006/11/20/82327.html'>阅读全文</a><img src ="http://www.blogjava.net/wjywilliam/aggbug/82327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjywilliam/" target="_blank">wjywilliam</a> 2006-11-20 16:56 <a href="http://www.blogjava.net/wjywilliam/archive/2006/11/20/82327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的IO系统基本应用</title><link>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82089.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Sun, 19 Nov 2006 12:19:00 GMT</pubDate><guid>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82089.html</guid><wfw:comment>http://www.blogjava.net/wjywilliam/comments/82089.html</wfw:comment><comments>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjywilliam/comments/commentRss/82089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjywilliam/services/trackbacks/82089.html</trackback:ping><description><![CDATA[
		<p>
				<font style="BACKGROUND-COLOR: #ffffff" color="#006400" size="5">
						<b>Java的IO系统基本应用</b>
				</font>
		</p>
		<p>
		</p>
		<div class="postText">
				<p>
						<strong>1. stream</strong>
						<strong>
								<br />
						</strong>stream代表的是任何有能力产出数据的数据源，或是任何有能力接收数据的接收源。在Java的IO中，所有的stream（包括Input和Out stream）都包括两种类型：<br /> <br /> 1.1 以字节为导向的stream<br /> 以字节为导向的stream，表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型：<br /> 1) input　stream：<br /> 1) ByteArrayInputStream：把内存中的一个缓冲区作为InputStream使用<br /> 2) StringBufferInputStream：把一个String对象作为InputStream<br /> 3) FileInputStream：把一个文件作为InputStream，实现对文件的读取操作<br /> 4) PipedInputStream：实现了pipe的概念，主要在线程中使用<br /> 5) SequenceInputStream：把多个InputStream合并为一个InputStream<br /> 2) Out　stream<br /> 1) ByteArrayOutputStream：把信息存入内存中的一个缓冲区中<br /> 2) FileOutputStream：把信息存入文件中<br /> 3) PipedOutputStream：实现了pipe的概念，主要在线程中使用<br /> 4) SequenceOutputStream：把多个OutStream合并为一个OutStream<br /> <br /> 1.2 以Unicode字符为导向的stream<br /> 以Unicode字符为导向的stream，表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型：<br /> 1) Input　Stream<br /> 1) CharArrayReader：与ByteArrayInputStream对应<br /> 2) StringReader：与StringBufferInputStream对应<br /> 3) FileReader：与FileInputStream对应<br /> 4) PipedReader：与PipedInputStream对应<br /> 2) Out　Stream<br /> 1) CharArrayWrite：与ByteArrayOutputStream对应<br /> 2) StringWrite：无与之对应的以字节为导向的stream<br /> 3) FileWrite：与FileOutputStream对应<br /> 4) PipedWrite：与PipedOutputStream对应<br /> 以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同，字是在操作时的导向不同。如CharArrayReader：和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用，所不同的是前者每次从内存中读取一个字节的信息，而后者每次从内存中读取一个字符。<br /> <br /> 1.3 两种不现导向的stream之间的转换<br /> InputStreamReader和OutputStreamReader：把一个以字节为导向的stream转换成一个以字符为导向的stream。<br /> <br /> <strong>2. stream添加属性<br /></strong> <br /> 2.1 “为stream添加属性”的作用<br /> 运用上面介绍的Java中操作IO的API，我们就可完成我们想完成的任何操作了。但通过FilterInputStream和FilterOutStream的子类，我们可以为stream添加属性。下面以一个例子来说明这种功能的作用。<br /> 如果我们要往一个文件中写入数据，我们可以这样操作：<br /> FileOutStream fs = new FileOutStream(“test.txt”);<br /> 然后就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是，如果我们想实现“先把要写入文件的数据先缓存到内存中，再把缓存中的数据写入文件中”的功能时，上面的API就没有一个能满足我们的需求了。但是通过FilterInputStream和FilterOutStream的子类，为FileOutStream添加我们所需要的功能。<br /> <br /> 2.2 FilterInputStream的各种类型<br /> <br /> 2.2.1 用于封装以字节为导向的InputStream<br /> 1) DataInputStream：从stream中读取基本类型（int、char等）数据。<br /> 2) BufferedInputStream：使用缓冲区<br /> 3) LineNumberInputStream：会记录input stream内的行数，然后可以调用getLineNumber()和setLineNumber(int)<br /> 4) PushbackInputStream：很少用到，一般用于编译器开发<br /> <br /> 2.2.2 用于封装以字符为导向的InputStream<br /> 1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader，否则使用DataInputStream<br /> 2) BufferedReader：与BufferedInputStream对应<br /> 3) LineNumberReader：与LineNumberInputStream对应<br /> 4) PushBackReader：与PushbackInputStream对应<br /> <br /> 2.3 FilterOutStream的各种类型<br /> <br /> 2.2.3 用于封装以字节为导向的OutputStream<br /> 1) DataIOutStream：往stream中输出基本类型（int、char等）数据。<br /> 2) BufferedOutStream：使用缓冲区<br /> 3) PrintStream：产生格式化输出<br /> <br /> 2.2.4 用于封装以字符为导向的OutputStream<br /> 1) BufferedWrite：与对应<br /> 2) PrintWrite：与对应<br /> <br /><strong> 3. RandomAccessFile<br /><br /></strong> 1) 可通过RandomAccessFile对象完成对文件的读写操作<br /> 2) 在产生一个对象时，可指明要打开的文件的性质：r，只读；w，只写；rw可读写<br /> 3) 可以直接跳到文件中指定的位置<br /> <br /><strong> 4. I/O应用的一个例子<br /></strong><br /> <font color="#0000ff">import java.io.*;<br /> public class TestIO{<br /> public static void main(String[] args)<br /> throws IOException{<br /> <font color="#006400">//1.以行为单位从一个文件读取数据</font><br /> BufferedReader in = <br /> new BufferedReader(<br /> new FileReader("F:\\nepalon\\TestIO.java"));<br /> String s, s2 = new String();<br /> while((s = in.readLine()) != null)<br /> s2 += s + "\n";<br /> in.close();<br /> <br /> <font color="#008000">//1b. 接收键盘的输入<br /></font> BufferedReader stdin = <br /> new BufferedReader(<br /> new InputStreamReader(System.in));<br /> System.out.println("Enter a line:");<br /> System.out.println(stdin.readLine());<br /> <br /><font color="#006400"> //2. 从一个String对象中读取数据</font><br /> StringReader in2 = new StringReader(s2);<br /> int c;<br /> while((c = in2.read()) != -1)<br /> System.out.println((char)c);<br /> in2.close();<br /> <br /><font color="#006400"> //3. 从内存取出格式化输入</font><br /> try{<br /> DataInputStream in3 = <br /> new DataInputStream(<br /> new ByteArrayInputStream(s2.getBytes()));<br /> while(true)<br /> System.out.println((char)in3.readByte()); <br /> }<br /> catch(EOFException e){<br /> System.out.println("End of stream");<br /> }<br /> <br /><font color="#006400"> //4. 输出到文件<br /></font> try{<br /> BufferedReader in4 =<br /> new BufferedReader(<br /> new StringReader(s2));<br /> PrintWriter out1 =<br /> new PrintWriter(<br /> new BufferedWriter(<br /> new FileWriter("F:\\nepalon\\ TestIO.out")));<br /> int lineCount = 1;<br /> while((s = in4.readLine()) != null)<br /> out1.println(lineCount++ + "：" + s);<br /> out1.close();<br /> in4.close();<br /> }<br /> catch(EOFException ex){<br /> System.out.println("End of stream");<br /> }<br /> <br /><font color="#006400"> //5. 数据的存储和恢复</font><br /> try{<br /> DataOutputStream out2 = <br /> new DataOutputStream(<br /> new BufferedOutputStream(<br /> new FileOutputStream("F:\\nepalon\\ Data.txt")));<br /> out2.writeDouble(3.1415926);<br /> out2.writeChars("\nThas was pi:writeChars\n");<br /> out2.writeBytes("Thas was pi:writeByte\n");<br /> out2.close();<br /> DataInputStream in5 =<br /> new DataInputStream(<br /> new BufferedInputStream(<br /> new FileInputStream("F:\\nepalon\\ Data.txt")));<br /> BufferedReader in5br =<br /> new BufferedReader(<br /> new InputStreamReader(in5));<br /> System.out.println(in5.readDouble());<br /> System.out.println(in5br.readLine());<br /> System.out.println(in5br.readLine());<br /> }<br /> catch(EOFException e){<br /> System.out.println("End of stream");<br /> }<br /> <br /><font color="#006400"> //6. 通过RandomAccessFile操作文件<br /></font> RandomAccessFile rf =<br /> new RandomAccessFile("F:\\nepalon\\ rtest.dat", "rw");<br /> for(int i=0; i&lt;10; i++)<br /> rf.writeDouble(i*1.414);<br /> rf.close();<br /> <br /> rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "r");<br /> for(int i=0; i&lt;10; i++)<br /> System.out.println("Value " + i + "：" + rf.readDouble());<br /> rf.close();<br /> <br /> rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "rw");<br /> rf.seek(5*8);<br /> rf.writeDouble(47.0001);<br /> rf.close();<br /> <br /> rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "r");<br /> for(int i=0; i&lt;10; i++)<br /> System.out.println("Value " + i + "：" + rf.readDouble());<br /> rf.close();<br /> }<br /> }<br /></font> <br /> <strong>关于代码的解释（以区为单位）：</strong><br /> 1区中，当读取文件时，先把文件内容读到缓存中，当调用in.readLine()时，再从缓存中以字符的方式读取数据（以下简称“缓存字节读取方式”）。<br /> 1b区中，由于想以缓存字节读取方式从标准IO（键盘）中读取数据，所以要先把标准IO（System.in）转换成字符导向的stream，再进行BufferedReader封装。<br /> 2区中，要以字符的形式从一个String对象中读取数据，所以要产生一个StringReader类型的stream。<br /> 4区中，对String对象s2读取数据时，先把对象中的数据存入缓存中，再从缓冲中进行读取；对TestIO.out文件进行操作时，先把格式化后的信息输出到缓存中，再把缓存中的信息输出到文件中。<br /> 5区中，对Data.txt文件进行输出时，是先把基本类型的数据输出屋缓存中，再把缓存中的数据输出到文件中；对文件进行读取操作时，先把文件中的数据读取到缓存中，再从缓存中以基本类型的形式进行读取。注意in5.readDouble()这一行。因为写入第一个writeDouble()，所以为了正确显示。也要以基本类型的形式进行读取。<br /> 6区是通过RandomAccessFile类对文件进行操作。</p>
		</div>
<img src ="http://www.blogjava.net/wjywilliam/aggbug/82089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjywilliam/" target="_blank">wjywilliam</a> 2006-11-19 20:19 <a href="http://www.blogjava.net/wjywilliam/archive/2006/11/19/82089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java文件操作大全(Jsp版)</title><link>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82086.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Sun, 19 Nov 2006 12:17:00 GMT</pubDate><guid>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82086.html</guid><wfw:comment>http://www.blogjava.net/wjywilliam/comments/82086.html</wfw:comment><comments>http://www.blogjava.net/wjywilliam/archive/2006/11/19/82086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjywilliam/comments/commentRss/82086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjywilliam/services/trackbacks/82086.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<font face="Courier New">
								<b>
										<font color="#000080" size="5">Java文件操作大全</font>
								</b>
						</font>
				</font>
		</p>
		<p>
				<font size="2">
						<font face="Courier New">
								<strong>文件的建立/检查与删除</strong>
								<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;文件的建立、检查与删除&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath(""); <br />//out.println(path); <br />File f=new File(path,"File.txt"); <br />//out.println(f); <br />//out.println(f.exists()); <br /><br />if(f.exists()){//检查File.txt是否存在 <br />f.delete();//删除File.txt文件 <br />out.println(path + "\\File.txt 存在，已删除。"); <br />}else{ <br />f.createNewFile();//在当前目录下建立一个名为File.txt的文件 <br />out.println(path + "\\File.txt 不存在，已建立。");//输出目前所在的目录路径 <br />} <br />%&gt; <br /><br /><strong>目录的建立/检查与删除</strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;目录的建立/检查与删除&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath(""); <br />path=path + "\\Sub";//将要建立的目录路径 <br />File d=new File(path);//建立代表Sub目录的File对象，并得到它的一个引用 <br />if(d.exists()){//检查Sub目录是否存在 <br />d.delete(); <br />out.println("Sub目录存在，已删除"); <br />}else{ <br />d.mkdir();//建立Sub目录 <br />out.println("Sub目录不存在，已建立"); <br />} <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>如何在JSP中处理虚拟目录</strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP中如何处理虚拟目录&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />取得虚拟目录对应的磁盘路径&lt;br&gt; <br />Web站点主目录的位置为&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("/")%&gt;&lt;/font&gt;&lt;br&gt; <br />JSP网页所在的目录位置&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("./")%&gt;&lt;/font&gt;&lt;br&gt; <br />JSP网页所在目录上一层目录的位置&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("../")%&gt;&lt;/font&gt;&lt;br&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /></font>
				</font>
				<strong>
						<br />
						<font face="Courier New" size="2">文件属性的取得</font>
				</strong>
				<font face="Courier New" size="2">
						<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.util.Date,java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;文件属性的取得&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("/"); <br />File f=new File(path,"ReadData.txt"); <br />if(f.exists()){ <br />%&gt; <br />&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt; <br />文件长度为：&lt;%=f.length()%&gt; <br />&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt; <br />&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt; <br />&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt; <br />&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt; <br />&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt; <br />文件的最后修改日期为：&lt;%=new Date(f.lastModified())%&gt;&lt;br&gt; <br />&lt;% <br />}else{ <br />f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文件 <br />%&gt; <br />&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt; <br />文件长度为：&lt;%=f.length()%&gt; <br />&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt; <br />&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt; <br />&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt; <br />&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt; <br />&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt; <br />文件的最后修改日期为：&lt;%=new Date(f.lastModified())%&gt;&lt;br&gt; <br />&lt;% <br />} <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>取出目录中文件的方法</strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;取出目录中文件的方法--列出目录中的文件&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("/"); <br />File d=new File(path);//建立当前目录中文件的File对象 <br />File list[]=d.listFiles();//取得代表目录中所有文件的File对象数组 <br />out.println("&lt;font color=#ff0000&gt;" + path + "目录下的文件：&lt;/font&gt;&lt;br&gt;"); <br />for(int i=0;i&lt;list.length;i++){ <br />if(list&lt;I&gt;.isFile()){ <br />out.println(list&lt;I&gt;.getName() + "&lt;br&gt;"); <br />} <br />} <br />out.println("&lt;br&gt;&lt;font color=#ff0000&gt;" + path + "目录下的目录：&lt;/font&gt;&lt;br&gt;"); <br />for(int i=0;i&lt;list.length;i++){ <br />if(list&lt;I&gt;.isDirectory()){ <br />out.println(list&lt;I&gt;.getName() + "&lt;br&gt;"); <br />} <br />} <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>判断是否为空白文件</strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;判断是否为空白文件&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("/"); <br />out.println(path); <br />FileReader fr=new FileReader(path + "\\AtEnd.txt");//建立FileReader对象，并实例化为fr <br />//对FileReader类生成的对象使用read()方法，可以从字符流中读取下一个字符。 <br />if(fr.read()==-1)//判断是否已读到文件的结尾 <br />{ <br />out.print("AtEnd.txt文件中没有数据&lt;br&gt;"); <br />}else{ <br />out.println("AtEnd.txt文件中有数据"); <br />} <br />fr.close(); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /></font>
				<strong>
						<br />
						<font face="Courier New" size="2">读取所有的文件数据 </font>
				</strong>
				<br />
				<font face="Courier New" size="2">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*,java.lang.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;读取所有的文件数据&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("."); <br />FileReader fr=new FileReader(path + "\\ReadData.txt"); <br />//关键在于读取过程中，要判断所读取的字符是否已经到了文件的末尾，并且这个字符是不是文件中的断行符，即判断该字符值是否为13。 <br />int c=fr.read();//从文件中读取一个字符 <br />//判断是否已读到文件结尾 <br />while(c!=-1){ <br />out.print((char)c);//输出读到的数据 <br />c=fr.read();//从文件中继续读取数据 <br />if(c==13){//判断是否为断行字符 <br />out.print("&lt;br&gt;");//输出分行标签 <br />fr.skip(1);//略过一个字符 <br />//c=fr.read();//读取一个字符 <br />} <br />} <br />fr.close(); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>一行一行读取数据 </strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;文件读取&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("");//取得当前目录的路径 <br />FileReader fr=new FileReader(path + "\\file\\inc\\t.txt");//建立FileReader对象，并实例化为fr <br />BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br <br />String Line=br.readLine();//从文件读取一行字符串 <br />//判断读取到的字符串是否不为空 <br />while(Line!=null){ <br />out.println(Line + "&lt;br&gt;");//输出从文件中读取的数据 <br />Line=br.readLine();//从文件中继续读取一行数据 <br />} <br />br.close();//关闭BufferedReader对象 <br />fr.close();//关闭文件 <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>略过文件中的字符不读取 </strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;略过字节不读取&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("."); <br />FileReader fr=new FileReader(path + "\\ReadData.txt"); <br />fr.skip(2);//跳过2个字节 <br />int c=fr.read();//读取一个字节 <br />while(c!=-1){ <br />out.print((char)c); <br />c=fr.read(); <br />} <br />fr.close(); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>将数据写入文件 </strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;将数据写入文件&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("."); <br />FileWriter fw=new FileWriter(path + "\\WriteData.txt");//建立FileWriter对象，并实例化fw <br />//将字符串写入文件 <br />fw.write("大家好！"); <br />fw.write("本书是《JSP编程技巧》"); <br />fw.write("请多多指教！"); <br />fw.write("email:stride@sina.com"); <br />fw.close(); <br /><br />FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br <br />String Line=br.readLine(); <br />//读取一行数据 <br />out.println(Line + "&lt;br&gt;"); <br />br.close();//关闭BufferedReader对象 <br />fr.close(); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><br /><strong>将写入文件的数据分行 </strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;将写入文件的数据分行&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("."); <br />FileWriter fw=new FileWriter(path + "\\WriteData.txt"); <br />BufferedWriter bw=new BufferedWriter(fw); <br />bw.write("大家好！"); <br />bw.write("本书是《JSP编程技巧》。"); <br />bw.newLine();//断行 <br />bw.write("请多多指教！"); <br />bw.newLine();//断行 <br />bw.write("email: stride@sina.com"); <br />bw.flush();//将数据更新至文件 <br />fw.close();//关闭文件流 <br />out.println("写入文件内容为：&lt;br&gt;"); <br />FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />BufferedReader br=new BufferedReader(fr); <br />String Line=br.readLine();//读取一行数据 <br />while(Line!=null){ <br />out.println(Line + "&lt;br&gt;"); <br />Line=br.readLine(); <br />} <br />fr.close(); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br /><strong>如何将数据追加写入到文件</strong><br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />&lt;%@ page import="java.io.*"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;将写入文件的数据分行&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;% <br />String path=request.getRealPath("."); <br />RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw");//定义一个类RandomAccessFile的对象，并实例化 <br />rf.seek(rf.length());//将指针移动到文件末尾 <br />rf.writeBytes("\nAppend a line to the file!"); <br />rf.close();//关闭文件流 <br />out.println("写入文件内容为：&lt;br&gt;"); <br />FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />BufferedReader br=new BufferedReader(fr);//读取文件的BufferedRead对象 <br />String Line=br.readLine(); <br />while(Line!=null){ <br />out.println(Line + "&lt;br&gt;"); <br />Line=br.readLine(); <br />} <br />fr.close();//关闭文件 <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt; </font>
		</p>
<img src ="http://www.blogjava.net/wjywilliam/aggbug/82086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjywilliam/" target="_blank">wjywilliam</a> 2006-11-19 20:17 <a href="http://www.blogjava.net/wjywilliam/archive/2006/11/19/82086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>