69_Java_IO_File_IO流_节点_字符_字节流

网友投稿 567 2022-05-28

File

1 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关

2 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流

3 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".

一 File 创建_构造器

1.如何创建File类的实例 File(String filePath) File(String parentPath,String childPath) File(File parentFile,String childPath) 2. 相对路径:相较于某个路径下,指明的路径。绝对路径:包含盘符在内的文件或文件目录的路径 3.路径分隔符 windows:\ unix:/

@Test public void test1(){ //构造器1 File file1 = new File("hello.txt");//相对于当前module File file2 = new File("D:\workspace_idea1\JavaSenior\day08\he.txt"); //构造器2: File file3 = new File("D:\workspace_idea1","JavaSenior"); //构造器3: File file4 = new File(file3,"hi.txt"); }

二 File 方法

public String getAbsolutePath():获取绝对路径 public String getPath() :获取路径 public String getName() :获取名称 public String getParent():获取上层文件目录路径。若无,返回null public long length() :获取文件长度(即:字节数)。不能获取目录的长度。 public long lastModified() :获取最后一次的修改时间,毫秒值 如下的两个方法适用于文件目录: public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组 public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组 public boolean renameTo(File dest):把文件重命名为指定的文件路径 ;要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在 public boolean isDirectory():判断是否是文件目录 public boolean isFile() :判断是否是文件 public boolean exists() :判断是否存在 public boolean canRead() :判断是否可读 public boolean canWrite() :判断是否可写 public boolean isHidden() :判断是否隐藏 创建硬盘中对应的文件或文件目录 public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 public boolean mkdirs() :创建文件目录。如果此文件目录存在,就不创建了。如果上层文件目录不存在,一并创建 删除磁盘中的文件或文件目录 public boolean delete():删除文件或者文件夹

@Test public void test2(){ File file1 = new File("hello.txt"); // 内存层面的的调用,不涉及硬盘是否存在 System.out.println(file1.getAbsolutePath()); //F:\codes\java_reviews\chapter12IO\hello.txt System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(new Date(file1.lastModified())); System.out.println("**********"); System.out.println(file1.isDirectory()); System.out.println(file1.isFile()); System.out.println(file1.exists()); // false System.out.println(file1.canRead()); System.out.println(file1.canWrite()); System.out.println(file1.isHidden()); } @Test public void test3(){ File file1 = new File("F:\codes\java_reviews"); String[] list = file1.list(); for (String s: list){ System.out.println(s); } System.out.println("*******"); File[] files = file1.listFiles(); for (File f: files){ System.out.println(f); } } @Test public void test4() throws IOException { File file1 = new File("hi.txt"); if(!file1.exists()){ //文件的创建 file1.createNewFile(); // module下 src 平级 System.out.println("创建成功"); }else{//文件存在 file1.delete(); System.out.println("删除成功"); } } @Test public void test5(){ File file2 = new File("d:\io\io1\io4"); boolean mkdir1 = file2.mkdirs(); if(mkdir1){ System.out.println("创建成功2"); } // //要想删除成功,io4文件目录下不能有子目录或文件 File file3 = new File("D:\io\io1\io4"); file3 = new File("D:\io\io1"); // io1下面有io4 System.out.println(file3.delete()); // System.out.println(file3.delete()); // 如果file3=io4 仅仅删除 io4 }

Java.io包下

69_Java_IO_File_IO流_节点_字符_字节流

一、流的分类:

1.操作数据单位:字节流(文本文件(.txt,.java,.c,.cpp))、字符流 (非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt)

2.数据的流向:输入流、输出流

3.流的角色:节点流、处理流

二、流的体系结构

抽象基类         节点流(或文件流)                               缓冲流(处理流的一种)

InputStream     FileInputStream   (read(byte[] buffer))        BufferedInputStream (read(byte[] buffer))

OutputStream    FileOutputStream  (write(byte[] buffer,0,len)  BufferedOutputStream (write(byte[] buffer,0,len) / flush()

Reader          FileReader (read(char[] cbuf))                 BufferedReader (read(char[] cbuf) / readLine())

Writer          FileWriter (write(char[] cbuf,0,len)           BufferedWriter (write(char[] cbuf,0,len) / flush()

@Test public void test1(){ FileReader fileReader = null; try { //1.实例化File类的对象,指明要操作的文件 File file = new File("hello.txt"); //2.提供具体的流 fileReader = new FileReader(file); //3.数据的读入 //read():返回读入的一个字符。如果达到文件末尾,返回-1 int data ; while ((data =fileReader.read()) != -1){ System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } finally { //4.流的关闭操作 if (fileReader != null) try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } }

FileReader

@Test public void test2(){ FileReader fileReader = null; try { File file = new File("hello.txt"); fileReader = new FileReader(file); //read(char[] cbuf):返回每次读入cbuf数组中的字符的个数。如果达到文件末尾,返回-1 char[] chars = new char[5]; int data ; while ((data= fileReader.read(chars)) !=-1){ String s = new String(chars, 0, data); System.out.print(s); } } catch (IOException e) { e.printStackTrace(); } finally { if (fileReader !=null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } }

FileReader&FileWriter

@Test public void test3(){ copyFile("hello.txt", "hello1.txt"); } public void copyFile(String srcFile, String destFile){ FileReader fileReader = null; FileWriter fileWriter = null; try { File srcfile = new File(srcFile); File destfile = new File(destFile); fileReader = new FileReader(srcFile); fileWriter = new FileWriter(destFile); char[] chars = new char[5]; int len; //记录每次读入到cbuf数组中的字符的个数 while ((len = fileReader.read(chars)) != -1){ // fileWriter.write(chars,0,len); //每次写出len个字符 // fileWriter.write(chars); //每次把chars 数组内容写入到目标文件 } } catch (IOException e) { e.printStackTrace(); } finally { if (fileReader !=null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileWriter != null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } }

FileInputStream和FileOutputStream的使用

1. 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理   reader & writer

2. 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理  Inputstream OutStream

public void copyFile(String srcPath,String destPath){ FileInputStream fis = null; FileOutputStream fos = null; try { // File srcFile = new File(srcPath); File destFile = new File(destPath); // fis = new FileInputStream(srcFile); fos = new FileOutputStream(destFile); //复制的过程 byte[] buffer = new byte[1024]; int len; while((len = fis.read(buffer)) != -1){ fos.write(buffer,0,len); } } catch (IOException e) { e.printStackTrace(); } finally { if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if(fis != null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自动驾驶仿CARLA使用记录
下一篇:MapReduce快速入门系列(7) | Shuffle之排序(sort)详解及全排序
相关文章