【Java学习笔记】22:查漏补缺2
来源:互联网 发布:mysql左外连接查询 编辑:程序博客网 时间:2024/05/29 19:45
垃圾回收和内存管理
利用JVM跨平面和垃圾回收是Java的两个重要特性,在Java中垃圾回收都由GC(garbage collection)来完成。
栈内存中:基本类型的变量和对象的引用变量。出了作用域后内存会自动释放。
堆内存中:new创建的对象和数组。由GC来释放,发现没有引用指向会自动释放。
File文件类(操作文件和目录的)
1.构造方法
package t1;import java.io.File;public class Test { public static void main(String[] args) { test1(); } //创建File对象 private static void test1() { //方法1:直接用路径建立File对象 String path="C:\\Users\\Shinelon\\Desktop\\sb.txt";//注意转义字符 File f1=new File(path); //方法2:用父目录的File对象和文件名建立新File对象 File f2=new File("C:\\Users\\Shinelon\\Desktop");//父目录 File f3=new File(f2,"sb.txt"); //方法3:用父目录和文件名建立File对象 File f4=new File("C:\\Users\\Shinelon\\Desktop","sb.txt"); }}
2.路径分隔符和目录分隔符
在windows里路径分隔符是分号,目录分隔符是反斜杠。当我们用到Java跨平台开发时,不同平台下路径/目录分隔符是不一样的,java.io.File中提供了两个常量,它可以根据平台作自动的替换。
package t1;import java.io.File;public class Test { public static void main(String[] args) { test2(); } //路径分割符和目录分隔符 private static void test2() { //路径分隔符 System.out.println(File.pathSeparator);//字符串表示 System.out.println(File.pathSeparatorChar);//字符表示 //目录分隔符 System.out.println(File.separator);//字符串表示 System.out.println(File.separatorChar);//字符表示 //适合跨平台的写法 File f=new File("C:"+File.separator+"Users"+File.separator+"Shinelon"+File.separator+"Desktop"+File.separator+"sb.txt"); System.out.println(f.getAbsolutePath()); }}
在windows下运行结果:
;
;
\
\
C:\Users\Shinelon\Desktop\sb.txt
3.创建文件、临时文件、目录
package t1;import java.io.File;import java.io.IOException;public class Test{ public static void main(String[] args) { test3(); } //创建文件 private static void test3() { File f=new File("C:"+File.separator+"Users"+File.separator+"Shinelon"+File.separator+"Desktop"+File.separator+"no.txt"); if(!f.exists())//如果文件不存在 { //尝试创建它 try { boolean b=f.createNewFile(); if(b) System.out.println("创建成功"); else System.out.println("创建失败"); } catch (IOException e) { e.printStackTrace(); } } }}
package t1;import java.io.File;import java.io.IOException;public class Test{ public static void main(String[] args) { test3(); } //创建临时文件(需提供前缀和后缀名) private static void test3() { try { File f=File.createTempFile("linshi",".txt"); System.out.println(f.getAbsolutePath()); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}
运行结果:
C:\Users\Shinelon\AppData\Local\Temp\linshi7735620275895343102.txt
package t1;import java.io.File;import java.io.IOException;public class Test{ public static void main(String[] args) { test3(); } //创建目录 private static void test3() { File dir=new File("C:\\Users\\Shinelon\\Desktop\\a\\b\\c");// dir.mkdir();//只能创建一级的 dir.mkdirs();//创建级联的目录a\b\c }}
4.文件遍历
package t1;import java.io.File;import java.io.IOException;public class Test{ public static void main(String[] args) { test4(); } //遍历文件 private static void test4() { File f=new File("C:\\Users\\Shinelon\\Desktop"); File[] files=f.listFiles(); for(File p:files)//增强的for循环遍历整个数组 { System.out.println(p.getAbsolutePath()); } }}
部分运行结果:
5.文件的路径
package t1;import java.io.File;import java.io.IOException;public class Test{ public static void main(String[] args) { test5(); } //文件的路径 private static void test5() { File f1=new File(".\\f1.txt"); System.out.println(f1.getPath());//相对路径(构造方法中的路径) System.out.println(f1.getAbsolutePath());//绝对路径(当前路径+构造方法中的路径) try { System.out.println(f1.getCanonicalPath());//规范路径 } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}
6.文件属性
package t1;import java.io.File;public class Test{ public static void main(String[] args) { test6(); } //文件属性 private static void test6() { String path="C:\\Users\\Shinelon\\Desktop\\sb.txt"; File f=new File(path); f.setReadOnly();//设置成只读 System.out.println("能读:"+f.canRead()); System.out.println("能写:"+f.canWrite()); System.out.println("能执行:"+f.canExecute()); System.out.println(f.getTotalSpace());//所在磁盘总大小 System.out.println(f.getFreeSpace());//所在磁盘剩余大小 }}
运行结果:
能读:true
能写:false
能执行:true
107374178304
50559721472
JavaI/O相关
1.流的分类
按照方向可以分为输入流和输出流,即以内存为参照物,从内存出去为写,从外部进到内存为读。
按照字节和字符可以分为字节流和字符流,字节即是每次读写1byte=8bit,字符即是char(一个char是两个byte)。如果用字节流来读汉字就会产生乱码,因为汉字是双字节的。如果是二进制形式的(如多媒体文件),用的都是字节流。
2.体系结构
3.核心方法
输入流即是读read(),输出流即是写write(),另外输入输出结束后都要作关闭close()。
- 【Java学习笔记】22:查漏补缺2
- 【Java学习笔记】13:查漏补缺1
- 黑马程序员-学习笔记-查漏补缺
- 《MySQL必知必会》学习笔记-查漏补缺
- java查漏补缺
- java查漏补缺
- java查漏补缺
- Java查漏补缺
- python学习查漏补缺
- linux学习[查漏补缺]
- 【HTML5学习笔记】7:查漏补缺1
- 查漏补缺(java)
- Java基础查漏补缺
- Java基础查漏补缺
- 【Java学习笔记】31:查漏补缺3(传值和传引用,Eclipse单步调试)
- C和指针---查漏补缺笔记
- C#基础学习复习查漏补缺
- java查漏补缺-构造函数
- 时间序列分析的matlab统计量函数1
- ZOJ
- 最讨厌心灵鸡汤 所有失败最终都是人不行
- 关联式容器之底层红黑树
- Java并发编程:线程的创建和执行
- 【Java学习笔记】22:查漏补缺2
- Hibernate入门(一)
- C# 存储过程-机房充值
- 关于JDBC的一些基础知识
- 变量类型和计算
- Andriod ListView
- Windows7(32位)下安装Ubuntu16.04双系统
- 工厂方法模式
- 微信支付回调处理