java是跨平台的语言,但是在windows平台和Linux平台的路径表示完全不同
-----------------------------------相对路径绝对路径------------------------------------------------
绝对路径: c:/xxxx/xxxxx
相对路径 ../ ./ 相对程序运行的路径
String path = Log.class.getResource("/").getPath(); //使用反射技术,获得程序当前的运行路径
File file = new File(path);
生成File对象,可能是路径、也可能是文件
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件
boolean mkdir()
创建此抽象路径名指定的目录
boolean createNewFile()
且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean exists()
测试此抽象路径名表示的文件或目录是否存在
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
递归算法:
19世纪,ADA
特点: 1. 方法自身调用自身
2. 一定要有跳出的位置
3. 递归算法依赖的是压栈技术,这和计算机的硬件有关,一般不建议超过30层
java.io 类 Writer
java.io 类 FileWriter --------------- 对文件进行写操作
java.io 类 BufferedWriter
通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter
包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,
PrintWriter out
= new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
java.io 类 PrintWriter
void println(String x) 打印 String,然后终止该行 (有回车换行符)
//没有异常就是成功----逻辑类的方法通常不需要返回值
try {
FileUtil.copyTxtFile(srcFile, dstFile);
System.out.println("文件拷贝成功");
} catch (Exception e) {
System.out.println("文件拷贝失败");
}
几种File读写方式:
BufferedReader in = new BufferedReader(new FileReader(srcFile)); //字符流 in.Readln();
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(dstFile))); out.Print();
InputStream in = new FileInputStream(srcFile); //字节流
OutputStream out = new FileOutputStream(dstFile);
InputStream in = new FileInputStream(srcFile);
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 得到输入的端口流
PrintWriter out = new PrintWriter(socket.getOutputStream());// 从端口得到一个输出流
java.io 类 Reader -------------- 读取文本信息
java.io 类 BufferedReader
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。
因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
String readLine() 读取一个文本行 (如果已到达流末尾,则返回 null
//字节流的读写
java.io 类 InputStream
public int read(byte[] b) throws IOException (已经到达流末尾而不再有数据可用,则返回 -1)
//用水桶打水的思路去理解:
byte[] b 就是水桶,大小你自己定义
最后一次打水,一定是返回半桶。再打就返回-1了
//小心:byte[] b不是入参,它是用来接收返回数据的
java.io 类 FileInputStream --- 读文件字节流
java.io 类 DataInputStream --- 读取网络字节流
javax.servlet Class ServletInputStream
javax.servlet Class ServletOutputStream
java.io 类 OutputStream
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
java.io 类 ByteArrayOutputStream
log4j日志记录方法:
写日志的方式:
log4j , slf4j , apache-commons-logging
使用log4j的步骤:
1. 把log4j的jar包,导入到系统中 buildpath
2. 创建log4j.properties配置文件
3. 编写配置信息
log4j.rootLogger=DEBUG,BB,AA
log4j的bug等级: FATAL(致命错误) > ERROR(错误) > WARN(警告) > INFO(一般性信息) > DEBUG(调试信息)
log4j.appender.AA=org.apache.log4j.ConsoleAppender
log4j.appender.AA.layout=org.apache.log4j.SimpleLayout