java基础:I/O流(一)——File类及其带来的投机取巧效果😂

admin 806 0

IO是指Input/Output,即输入和输出。以内存为中心/参照物:

  • Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。
  • Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。

:一个从源流向目的地的数据序列。I/O流类一旦被创建就会自动打开,通过调用close方法,可以显式关闭任何一个流 。

File类

表示磁盘文件信息。 该类主要用于文件和目录的创建、文件的查找、文件的删除、重命名文件、判断文件是否存在及读写权限 等。

构造方法

File(String name) name表示文件/目录的名称;可以包含路径信息
File(String pathToName , String name) pathToName表示路径; name表示文件名称
File(File directory, String name) File对象directory表示目录;name表示文件名称
File(URI uri) 使用统一资源定位符定位文件

其他常用方法

创建:

  • createNewFile():在指定位置创建空文件,成功返回true,如果已存在就不再创建了返回false
  • mkdir():在指定位置创建目录,这之后创建最后一级目录,如果上级目录不存在就抛出异常.
  • mkdirs():在指定位置创建目录,这也会创建路径中所有不存在的父目录
  • renameTo(File dest):重命名文件或文件夹。文件不同时,相当于文件的剪切,剪切的时候不能操作非空文件夹。移动/重命名成功返回true,失败返回false

删除:

  • delete() :删除一个文件或者空文件夹,如果文件夹不为空,则不能删除,成返回true,失败返回false
  • deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名的文件或者目录,保证文件异常时也可以删除文件

判断:

  • exists():判断指定的文件或者文件夹是否存在
  • isFile():判断是否是一个文件;如果不存在,则为false
  • isDirectory():判断是否是一个文件夹
  • isHidden():判断指定的文件是否是隐藏文件
  • isAbsolute():判断指定的文件或文件夹是否是在绝对路径下

获取:

  • getName():获取文件或文件夹名称
  • getPath():返回的是绝对路径,可以是相对路径,但是目录要指定
  • getAbsolutePath():获取绝对路径
  • length():获取文件的大小(字节为单位)
  • getParent():获取文件的父路径
  • lastModified():获取文件最后一次修改的时间

投机取巧的事情

之前做的UDP服务端实时接收数据,那么数据的呈现方式也有很多种,比如开发安卓客户端或者pc客户端,我的话还是投机取巧一下,建立一个静态网页挂出来,如果接收到数据就直接显示在网页上,接收数据的时候重新写一下网页内容,网页每一秒钟刷新一下,其实数据是每两秒钟接收一次。


package server;
import java.io.File;
import java.io.FileWriter;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 *
 * @author Administrator
 */

public class Server {

    public static void main(String[] args) throws Exception {
        String html1="<html>\n" +
                        "\n" +
                        "<head><meta http-equiv=\"refresh\" content=\"1\"></head>\n" +
                        "\n";
        String html2 = " \n" +"</html>";
        
        File file = new File("C:\\wwwroot\\whb.zyliu.xyz\\index.html");
      //if file doesnt exists, then create it
      if(!file.exists()){
       file.createNewFile();
      }
        DatagramSocket ds=new DatagramSocket(12345);
        byte[] buf =new byte[1000];
        DatagramPacket dp= new DatagramPacket(buf,buf.length);
        while(true)
        {
            ds.receive(dp);
            String ip=dp.getAddress().getHostAddress();
            String data =new String(dp.getData(),0,dp.getLength());
            int port=dp.getPort();
            SimpleDateFormat sdf = new SimpleDateFormat("时间:yyyy年MM月dd日 HH:mm:ss  ,,,湿度,,,温度,,,:"); 
            Calendar c = Calendar.getInstance();
            String time=sdf.format(c.getTime());
            System.out.println(time+data);
            String html=html1+time+data+html2;
            try (FileWriter fileWritter = new FileWriter("C:\\wwwroot\\whb.zyliu.xyz\\index.html")) {
                fileWritter.write(html);
            }

        }       
} 
}

效果

java基础:I/O流(一)——File类及其带来的投机取巧效果😂

发表评论 取消回复
表情 图片 链接 代码

分享