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);
}
}
}
}
????这什么玩意