application的应用和文件的操作

网站计数器,同一个会话只能计算一次,

<%@ page contentType="text/html;charset=GB2312" %>

<HTML><head>

<title>网站计数器</title>

</head><BODY>

    <%!   synchronized void countPeople()//串行化计数函数

        {  ServletContext  application=getServletContext();

           Integer number=(Integer)application.getAttribute("Count");

           if(number==null)  //如果是第1个访问本站

              { number=new Integer(1);

                application.setAttribute("Count",number);

              }

           else

              { number= new Integer(number.intValue()+1);

                application.setAttribute("Count",number);

              }

        }

    %>

    <%  if(session.isNew())//如果是一个新的会话

          countPeople();

    Integer yourNumber=(Integer)application.getAttribute("Count");

    %>

<P><P>欢迎访问本站,您是第

    <%=yourNumber%>

个访问用户。

</BODY>

</HTML>

文件的操作,File对象用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件的读写权等,不涉及对文件的读写操作。创建一个File对象的构建方法有三种:

File(String filename); File(String directoryPath,String filename); File(File f,String filename);

File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件的读写权等,但是不涉及对文件的操作。 public String getName(); --- 获取文件的名字。

public boolean canRead();----判断文件是否可读; 

public boolean canWrite();----判断文件是否可写;

public boolean exists();---判断文件是否存在;

public long length()  ----获取文件的长度;

public String getAbsolutePath()------获取文件的绝对路径;

public  String getParent()------获取文件的父类目录;

public boolean isFile()-----判断文件是否是一个正常的文件,而不是目录;

创建目录

public boolean mkdir()  File对象可调用之,成功为ture;

列出目录中的文件;

public String [] list() 用字符串返回目录下的全部文件;

public File[] listFiles() 

列出指点类型的文件;

public String[] list(FilenameFilter obj)

该方法用字符串形式返回目录下的指定类型的所有文件。

 public File [] listFiles(FilenameFilter obj) 
  该方法用File对象返回目录下的指定类型的所有文件。 

1.观察者设计模式
package comparator;
import java.util.*;
interface observer{
public void update(double temp);
}
class concreteobserver implements observer{
public void update(double temp){
System.out.println(this+"update "+temp);
}
public concreteobserver(subject s){
s.register(this);
}
}
interface subject{
public void register(observer o);
public void remove(observer o);
public void notifyobserver(double temp);
}
class concretesubject implements subject{
private List<observer> observers;
public void register(observer o){
observers.add(o);
}
public void remove(observer o){
observers.remove(o);
}
public void notifyobserver(double temp){
for(observer o:observers){
o.update(temp);
}
}
concretesubject(){
observers = new ArrayList<observer>();
}
}


public class test2{
public static void main(String agrs[]){
subject sb = new concretesubject();
observer ob1 = new concreteobserver(sb);
observer ob2 = new concreteobserver(sb);
observer ob3 = new concreteobserver(sb);
observer ob4 = new concreteobserver(sb);
observer ob5 = new concreteobserver(sb);
sb.notifyobserver(36.7);

}
}
2.File
在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作。要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示: 
public File(String pathname)  实例化File类的时候,必须设置好路径。
File类中的主要方法和常量 
public static final String pathSeparator 表示路径的分隔符(windows是:“;”)
public static final String separator 表示路径的分隔符(windows是:“\”)
public File(String pathname) 创建File类对象,传入完整路径
public boolean createNewFile() throws IOException 创建新文件
public boolean delete() 删除文件
public boolean exists() 判断文件是否存在
public boolean isDirectory() 判断给定的路径是否是一个目录
public long length() 返回文件的大小
public String[] list() 列出指定目录的全部内容,只是列出了名称
public File[] listFiles() 列出指定目录的全部内容,会列出路径
public boolean mkdir() 创建一个目录
public boolean renameTo(File dest) 为已有的文件重新命名
创建一个新文件 
package comparator;
import java.util.*;
import java.io.File;
import java.io.IOException;
public class test2{
public static void main(String agrs[]){
String path = "d:" + File.separator + "test.txt" ; // 拼凑出可以适应操作系统的路径
File f = new File(path); // 必须给出路径
try {
f.createNewFile(); // 根据给定的路径创建新文件
} catch (IOException e) {
e.printStackTrace();
}
}
}
删除一个指定的文件 
package comparator;
import java.util.*;
import java.io.File;
import java.io.IOException;
public class test2{
public static void main(String agrs[]){
String path = "d:" + File.separator + "test.txt" ; // 拼凑出可以适应操作系统的路径
File f = new File(path); // 必须给出路径
f.delete();
}
}


创建目录
package comparator;
import java.util.*;
import java.io.File;
import java.io.IOException;
public class test2{
public static void main(String agrs[]){
File f = new File("d:" + File.separator + "hxzy"); // 给出路径
f.mkdir() ;
}
}
列出指定目录的全部文件 
public String[] list():列出全部名称,返回一个字符串数组; 
public File[] listFiles():列出完整的路径,返回一个File对象数组。
package comparator;
import java.util.*;
import java.io.File;
import java.io.IOException;
public class test2{
public static void main(String agrs[]){
File f = new File("d:" + File.separator); // 必须给出路径
String str[] = f.list(); // 列出给定目录中的内容
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
File files[] = f.listFiles(); // 列出全部的文件
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]) ;


}
}
}
列出指定目录的全部内容 
package IO;
import java.io.File;
public class bianli {
public static void main(String args[]) {
File my = new File("d:" + File.separator); // 操作路径
print(my) ;
}
public static void print(File file) {
if (file != null) {
if (file.isDirectory()) {
File f[] = file.listFiles() ;
if (f != null) {
for (int i = 0; i < f.length; i++) {
print(f[i]);
}
}
}else{
System.out.println(file);
}
}
}
}
对文件内容的操作
RandomAccessFile:可以随机的读取一个文件中指定位置的数据
RandomAccessFile类的常用操作方法 






public RandomAccessFile(File file,String mode) throws FileNotFoundException 接收File类的对象,指定操作路径,但是在设置时需要设置模式,“r”:只读、“w”:只写、“rw”:读写
public RandomAccessFile(String name,String mode) throws FileNotFoundException 不再使用File类对象表示文件,而是直接输入了一个固定的文件路径
public void close() throws IOException 关闭操作
public int read(byte[] b) throws IOException 将内容读取到一个byte数组之中
public final byte readByte() throws IOException 读取一个字节
public final int readInt() throws IOException 从文件中读取整型数据
public void seek(long pos) throws IOException 设置读指针的位置
public final void writeBytes(String s) throws IOException 将一个字符串写入到文件之中,按字节的方式处理。
public final void writeInt(int v) throws IOException 将一个int型数据写入文件,长度为4位
public int skipBytes(int n) throws IOException 指针跳过多少个字节














package IO;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
public class bianli {
public static void randomRed(String path,int pointe){  
        try{   
            RandomAccessFile raf=new RandomAccessFile(path, "r");  
            //获取RandomAccessFile对象文件指针的位置,初始位置是0  
            System.out.println("RandomAccessFile文件指针的初始位置:"+raf.getFilePointer());  
            raf.seek(pointe);//移动文件指针位置  
            byte[]  buff=new byte[1024];  
            //用于保存实际读取的字节数  
            int hasRead=0;  
            //循环读取  
            while((hasRead=raf.read(buff))>0){  
                //打印读取的内容,并将字节转为字符串输入  
                System.out.println(new String(buff,0,hasRead));  
           }                 
        }catch(Exception e){  
            e.printStackTrace();  
        }  
    }  

public static void randomWrite(String path){  
   try{  
       /**以读写的方式建立一个RandomAccessFile对象**/  
       RandomAccessFile raf=new RandomAccessFile(path, "rw");  
       //将记录指针移动到文件最后  
       raf.seek(raf.length());  
       raf.write("我是追加的 \r\n".getBytes());  
         
   }catch(Exception e){  
       e.printStackTrace();  
   }  
     
}  

public static void main(String args[]){
  String path="D:\\1.txt";         
  randomWrite(path);
  int seekPointer=29;  
    randomRed(path,seekPointer);//读取的方法   
}
}

RandomAccessFile:可以随机的读取一个文件中指定位置的数据

RandomAccessFile类的常用操作方法

 

 

 

public RandomAccessFile(File file,String mode) throws FileNotFoundException

接收File类的对象,指定操作路径,但是在设置时需要设置模式,“r”:只读、“w”:只写、“rw”:读写

public RandomAccessFile(String name,String mode) throws FileNotFoundException

不再使用File类对象表示文件,而是直接输入了一个固定的文件路径

public void close() throws IOException

关闭操作

public int read(byte[] b) throws IOException

将内容读取到一个byte数组之中

public final byte readByte() throws IOException

读取一个字节

public final int readInt() throws IOException

从文件中读取整型数据

public void seek(long pos) throws IOException

设置读指针的位置

public final void writeBytes(String s) throws IOException

将一个字符串写入到文件之中,按字节的方式处理。

public final void writeInt(int v) throws IOException

将一个int型数据写入文件,长度为4

public int skipBytes(int n) throws IOException

指针跳过多少个字节


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值