中软Java学习笔记8月11日笔记之File

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
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值