package USTC;
import java.io.*;
/**
* <br>Title: 文件读写封装</br>
* <br>Description: 主要封装了文件操作的类,完全可以作为一个BEAN使用</br>
* <br>Copyright: Copyright (c) 2005</br>
* <br>Company: </br>
* <br>作者:汪征</br>
* @version 1.0
*
*/
public class FILE {
public FILE() {
}
private String filePath="c:/",fileName="", fileContent=null;
/**
* 获取属性fileContent的值,为了能显示HTML或JSP源文件,需进行流的处理技术:
*/
public String getFileContent()
{ try{ StringReader in=new StringReader(fileContent) ;//指向字符串的字符流。
PushbackReader push=new PushbackReader(in);
StringBuffer stringbuffer=new StringBuffer();
int c;
char b[]=new char[1];
while ( (c=push.read(b,0,1))!=-1)//读取1个字符放入字符数组b。
{ String s=new String(b);
if(s.equals("<")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals(">")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals("/n"))
{ stringbuffer.append("<BR>");
}
else
{ stringbuffer.append(s);
}
}
push.close();
in.close();
return fileContent=new String(stringbuffer);
}
catch(IOException e)
{return fileContent=new String("不能读取内容");
}
}
/**
* 写文件
* @param s String:将内容写入参数S中
*/
public void setFileContent(String s)
{ fileContent=s;
try{
byte b[]=fileContent.getBytes("ISO-8859-1");
fileContent=new String(b);
File file=new File(filePath,fileName);
FileWriter in=new FileWriter(file) ;
BufferedWriter buffer=new BufferedWriter(in);
buffer.write(fileContent);
buffer.flush();
buffer.close();
in.close();
}
catch(Exception e)
{}
}
/**
* 设置该对象目录属性的文件路径值:
* @param s String :文件路径
*/
public void setFilePath(String s)
{filePath=s;
try{byte b[]=filePath.getBytes("ISO-8859-1");
filePath= new String(b);
}
catch(Exception ee)
{ }
}
/**
* 得到当前设置的文件路径值:
* @return String
*/
public String getFilePath()
{return filePath;
}
/**
* 设置该对象的文件名:
* @param s String
*/
public void setFileName(String s)
{ fileName=s;
try{byte b[]=fileName.getBytes("ISO-8859-1");
fileName=new String(b);
}
catch(Exception ee)
{ }
}
/**
* 得到当前设定中的文件名:
* @return String
*/
public String getFileName()
{return fileName;
}
/**
* 列出当前对象设定目录下的文件
* @return String[]
*/
public String[] listFile()
{ File dir=new File(filePath);
String file_name[]=dir.list();
return file_name;
}
/**
* 读取已经设定路径下目录中的文件的内容:
* @return StringBuffer
*/
public StringBuffer readFile()
{ try{ File file=new File(filePath,fileName);
FileReader in=new FileReader(file) ;
PushbackReader push=new PushbackReader(in);
StringBuffer stringbuffer=new StringBuffer();
int c;
char b[]=new char[1];
while ( (c=push.read(b,0,1))!=-1)//读取1个字符放入字符数组b。
{ String s=new String(b);
if(s.equals("<")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals(">")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals("/n"))
{ stringbuffer.append("<BR>");
}
else
{ stringbuffer.append(s);
}
}
push.close();
in.close();
return stringbuffer;
}
catch(IOException e)
{return new StringBuffer("不能读取文件");
}
}
/**
* 从文本读出一个数据值。主要应用单文本的数字读写
* @param FileName String
* @throws FileNotFoundException
* @throws IOException
* @return int
*/
public static int readIn(String FileName) throws FileNotFoundException, IOException {
FileInputStream in = new FileInputStream(FileName);
DataInputStream dataIn = new DataInputStream(in);
int number = dataIn.readInt();
//number++;
in.close();
dataIn.close();
return number;
}
/**
* 从文本写入一个数据值。主要应用单文本的数字读写
* @param FileName String
* @param number int
* @throws FileNotFoundException
* @throws IOException
*/
public static void writeIn(String FileName,int number) throws FileNotFoundException, IOException {
FileOutputStream out = new FileOutputStream(FileName);
DataOutputStream dataOut = new DataOutputStream(out);
dataOut.writeInt(number);
out.close();
dataOut.close();
}
private void jbInit() throws Exception {
}
}