【Java学习笔记】22:查漏补缺2

xiaoxiao2021-02-28  108

垃圾回收和内存管理 利用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()。

转载请注明原文地址: https://www.6miu.com/read-31495.html

最新回复(0)