JSP中文件的建立、检查与删除!

文件的建立、检查与删除

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>文件的建立、检查与删除</title>
</head>
<body>
<%
    String path=request.getRealPath("");
    //out.println(path);
    File f=new File(path,"File.txt");
    //out.println(f);
    //out.println(f.exists());

    if(f.exists()){  //检查File.txt是否存在
        f.delete();  //删除File.txt文件
    out.println(path + "//File.txt 存在,已删除。");
    }else{
        f.createNewFile();  //在当前目录下建立一个名为File.txt的文件
        out.println(path + "//File.txt 不存在,已建立。"); //输出目前所在的目录路径
    }
%>

 
目录的建立/检查与删除

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>目录的建立/检查与删除</title>
</head>
<body>
<%
    String path=request.getRealPath("");
    path=path + "//Sub";  //将要建立的目录路径
    File d=new File(path);  //建立代表Sub目录的File对象,并得到它的一个引用
    if(d.exists()){   //检查Sub目录是否存在
        d.delete();
        out.println("Sub目录存在,已删除");
    }else{
        d.mkdir();    //建立Sub目录
    out.println("Sub目录不存在,已建立");
    }
%>
</body>
</html>


  如何在JSP中处理虚拟目录


<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>JSP中如何处理虚拟目录</title>
</head>
<body>
取得虚拟目录对应的磁盘路径<br>
Web站点主目录的位置为<font color=#ff0000><%=request.getRealPath("/")%></font><br>
JSP网页所在的目录位置<font color=#ff0000><%=request.getRealPath("./")%></font><br>
JSP网页所在目录上一层目录的位置<font color=#ff0000><%=request.getRealPath("../")%></font><br>
</body>
</html>


 文件属性的取得
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.Date,java.io.*"%>
<html>
<head>
    <title>文件属性的取得</title>
</head>
<body>
<%
    String path=request.getRealPath("/");
    File f=new File(path,"ReadData.txt");
    if(f.exists()){
%>
<%=f.getName()%>的属性如下:<br><br>
文件长度为:<%=f.length()%>
<%=f.isFile()?"是文件":"不是文件"%><br>
<%=f.isDirectory()?"是目录":"不是目录"%><br>
<%=f.canRead()?"可读取":"不可读取"%><br>
<%=f.canWrite()?"可写入":"不可写入"%><br>
<%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%><br>
文件的最后修改日期为:<%=new Date(f.lastModified())%><br>
<%
}else{
f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文件
%>
<%=f.getName()%>的属性如下:<br><br>
文件长度为:<%=f.length()%>
<%=f.isFile()?"是文件":"不是文件"%><br>
<%=f.isDirectory()?"是目录":"不是目录"%><br>
<%=f.canRead()?"可读取":"不可读取"%><br>
<%=f.canWrite()?"可写入":"不可写入"%><br>
<%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%><br>
文件的最后修改日期为:<%=new Date(f.lastModified())%><br>
<%
}
%>
</body>
</html>
 
  取出目录中文件的方法

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>取出目录中文件的方法--列出目录中的文件</title>
</head>
<body>
<%
    String path=request.getRealPath("/");
    File d=new File(path);//建立当前目录中文件的File对象
    File list[]=d.listFiles();//取得代表目录中所有文件的File对象数组
    out.println("<font color=#ff0000>" + path + "目录下的文件:</font><br>");
    for(int i=0;i<list.length;i++){
        if(list<I>.isFile()){
            out.println(list<I>.getName() + "<br>");
        }
    }
    out.println("<br><font color=#ff0000>" + path + "目录下的目录:</font><br>");
    for(int i=0;i<list.length;i++){
        if(list<I>.isDirectory()){
            out.println(list<I>.getName() + "<br>");
        }
    }
%>
</body>
</html>


判断是否为空白文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>判断是否为空白文件</title>
</head>
<body>
<%
    String path=request.getRealPath("/");
    out.println(path);
    FileReader fr=new FileReader(path + "//AtEnd.txt");//建立FileReader对象,并实例化为fr
    //对FileReader类生成的对象使用read()方法,可以从字符流中读取下一个字符。
    if(fr.read()==-1)//判断是否已读到文件的结尾
    {
        out.print("AtEnd.txt文件中没有数据<br>");
    }else{
        out.println("AtEnd.txt文件中有数据");
    }
    fr.close();
%>
</body>
</html>
    <B>读取所有的文件数据</B>
<ccid_nobr>
<table width="400" border="1" cellspacing="0" cellpadding="2"
bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
<tr>
<td bgcolor="e6e6e6" class="code" style="font-size:9pt">
<pre><ccid_code> <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*,java.lang.*"%>
<html>
<head>
<title>读取所有的文件数据</title>
</head>
<body>
<%
    String path=request.getRealPath(".");
    FileReader fr=new FileReader(path + "//ReadData.txt");
    //关键在于读取过程中,要判断所读取的字符是否已经到了文件的末尾,
    并且这个字符是不是文件中的断行符,即判断该字符值是否为13。
    int c=fr.read();//从文件中读取一个字符
    //判断是否已读到文件结尾
    while(c!=-1){
        out.print((char)c);//输出读到的数据
        c=fr.read();//从文件中继续读取数据
        if(c==13){//判断是否为断行字符
            out.print("<br>");//输出分行标签
            fr.skip(1);//略过一个字符
            //c=fr.read();//读取一个字符
        }
    }
    fr.close();
%>
</body>
</html>
  一行一行读取数据
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>文件读取</title>
</head>
<body>
<%
    String path=request.getRealPath("");//取得当前目录的路径
    FileReader fr=new FileReader(path + "//file//inc//t.txt");//建立FileReader对象,并实例化为fr
    BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象,并实例化为br
    String Line=br.readLine();//从文件读取一行字符串
    //判断读取到的字符串是否不为空
    while(Line!=null){
        out.println(Line + "<br>");//输出从文件中读取的数据
        Line=br.readLine();//从文件中继续读取一行数据
    }
    br.close();//关闭BufferedReader对象
    fr.close();//关闭文件
%>
</body>
</html>

 略过文件中的字符不读取
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>略过字节不读取</title>
</head>
<body>
<%
    String path=request.getRealPath(".");
    FileReader fr=new FileReader(path + "//ReadData.txt");
    fr.skip(2);//跳过2个字节
    int c=fr.read();//读取一个字节
    while(c!=-1){
        out.print((char)c);
        c=fr.read();
    }
    fr.close();
%>
</body>
</html>
  将数据写入文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>将数据写入文件</title>
</head>
<body>
<%
    String path=request.getRealPath(".");
    FileWriter fw=new FileWriter(path + "//WriteData.txt");//建立FileWriter对象,并实例化fw
    //将字符串写入文件
    fw.write("大家好!");
    fw.write("本书是《JSP编程技巧》");
    fw.write("请多多指教!");
    fw.write("email:stride@sina.com");
    fw.close();

    FileReader fr=new FileReader(path + "//WriteData.txt");
    BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象,并实例化为br
    String Line=br.readLine();
    //读取一行数据
    out.println(Line + "<br>");
    br.close();//关闭BufferedReader对象
    fr.close();
%>
</body>
</html>
  将写入文件的数据分行
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>将写入文件的数据分行</title>
</head>
<body>
<%
    String path=request.getRealPath(".");
    FileWriter fw=new FileWriter(path + "//WriteData.txt");
    BufferedWriter bw=new BufferedWriter(fw);
    bw.write("大家好!");
    bw.write("本书是《JSP编程技巧》。");
    bw.newLine();//断行
    bw.write("请多多指教!");
    bw.newLine();//断行
    bw.write("email: stride@sina.com");
    bw.flush();//将数据更新至文件
    fw.close();//关闭文件流
    out.println("写入文件内容为:<br>");
    FileReader fr=new FileReader(path + "//WriteData.txt");
    BufferedReader br=new BufferedReader(fr);
    String Line=br.readLine();//读取一行数据
    while(Line!=null){
        out.println(Line + "<br>");
        Line=br.readLine();
    }
    fr.close();
%>
</body>
</html>
  如何将数据追加写入到文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
    <title>将写入文件的数据分行</title>
</head>
<body>
<%
    String path=request.getRealPath(".");
    RandomAccessFile rf=new RandomAccessFile(path + "//WriteData.txt","rw");
    //定义一个类RandomAccessFile的对象,并实例化
    rf.seek(rf.length());//将指针移动到文件末尾
    rf.writeBytes("/nAppend a line to the file!");
    rf.close();//关闭文件流
    out.println("写入文件内容为:<br>");
    FileReader fr=new FileReader(path + "//WriteData.txt");
    BufferedReader br=new BufferedReader(fr);//读取文件的BufferedRead对象
    String Line=br.readLine();
    while(Line!=null){
        out.println(Line + "<br>");
        Line=br.readLine();
    }
    fr.close();//关闭文件
%>
</body>
</html></I></I></I></I>


输入输出流
在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类
InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Java
引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。
Java.io包简介
JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。
InputStream类和OutputStream类
InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有输入数据流都具有的共通特性。
java.io.InputStream的方法如下:
public abstract read()throws IOException
读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的输入流类需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。
public int read(byte[] b)throws IOException
把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。
public abstract int read(byte[] b,int off,int len)throws IOException
把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。
public long skip(long n)throws IOException
略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。
public int available()throws IOException
read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写
/*
* Created on 2005-3-10
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package mytestfiles;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
* @author zhangqinglin
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Files
{
public static void main(String[] args) throws IOException
{
Files f = new Files();
// System.out.println(f.readFile("f://LinkFile.java"));
// f.readAllFile("f://","LinkFile.java");
// f.readLineFile("f://","LinkFile.java");
// System.out.println(f.fileIsNull("f://","122.txt"));
// f.readFolderByFile("F://PDF");
// System.out.println(f.createAndDeleteFolder("ss","f://"));
// System.out.println(f.createAndDeleteFile("f://ss//","TestFile.dat"));
String[] ss = new String[50];
for(int i=0;i<ss.length;i++)
{
ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;
}
f.writeFile("f://ss//","TestFile.txt",ss);
}
/**
* 文件的写入
* @param filePath(文件路径)
* @param fileName(文件名)
* @param args[]
* @throws IOException
*/
public void writeFile(String filePath,String fileName,String[] args) throws IOException
{
FileWriter fw = new FileWriter(filePath+fileName);
PrintWriter out=new PrintWriter(fw);
for(int i=0;i<args.length;i++)
{
out.write(args[i]);
out.println();
out.flush();
}
fw.close();
out.close();
}
/**
* 文件的写入
* @param filePath(文件路径)
* @param fileName(文件名)
* @param args
* @throws IOException
*/
public void writeFile(String filePath,String fileName,String args) throws IOException
{
FileWriter fw = new FileWriter(filePath+fileName);
fw.write(args);
fw.close();
}
/**
* 创建与删除文件
* @param filePath
* @param fileName
* @return 创建成功返回true
* @throws IOException
*/
public boolean createAndDeleteFile(String filePath,String fileName) throws IOException
{
boolean result = false;
File file = new File(filePath,fileName);
if(file.exists())
{
file.delete();
result = true;
System.out.println("文件已经删除!");
}
else
{
file.createNewFile();
result = true;
System.out.println("文件已经创建!");
}
return result;
}
/**
* 创建和删除目录
* @param folderName
* @param filePath
* @return 删除成功返回true
*/
public boolean createAndDeleteFolder(String folderName,String filePath)
{
boolean result = false;
try
{
File file = new File(filePath+folderName);
if(file.exists())
{
file.delete();
System.out.println("目录已经存在,已删除!");
result = true;
}
else
{
file.mkdir();
System.out.println("目录不存在,已经建立!");
result = true;
}
}
catch(Exception ex)
{
result = false;
System.out.println("CreateAndDeleteFolder is error:"+ex);
}
return result;
}
/**
* 输出目录中的所有文件及目录名字
* @param filePath
*/
public void readFolderByFile(String filePath)
{
File file = new File(filePath);
File[] tempFile = file.listFiles();
for(int i = 0;i<tempFile.length;i++)
{
if(tempFile[i].isFile())
{
System.out.println("File : "+tempFile[i].getName());
}
if(tempFile[i].isDirectory())
{
System.out.println("Directory : "+tempFile[i].getName());
}
}
}
/**
* 检查文件中是否为一个空
* @param filePath
* @param fileName
* @return 为空返回true
* @throws IOException
*/
public boolean fileIsNull(String filePath,String fileName) throws IOException
{
boolean result = false;
FileReader fr = new FileReader(filePath+fileName);
if(fr.read() == -1)
{
result = true;
System.out.println(fileName+" 文件中没有数据!");
}
else
{
System.out.println(fileName+" 文件中有数据!");
}
fr.close();
return result;
}
/**
* 读取文件中的所有内容
* @param filePath
* @param fileName
* @throws IOException
*/
public void readAllFile(String filePath,String fileName) throws IOException
{
FileReader fr = new FileReader(filePath+fileName);
int count = fr.read();
while(count != -1)
{
System.out.print((char)count);
count = fr.read();
if(count == 13)
{
fr.skip(1);
}
}
fr.close();
}
/**
* 一行一行的读取文件中的数据
* @param filePath
* @param fileName
* @throws IOException
*/
public void readLineFile(String filePath,String fileName) throws IOException
{
FileReader fr = new FileReader(filePath+fileName);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while(line != null)
{
System.out.println(line);
line = br.readLine();
}
br.close();
fr.close();
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值