简述:
1.流:从一端移动到另一端,源头与目的地
2.Io流分类:
(1)流向:输入流,输出流
(2)数据:
字节流:二进制,可以一切文件,包括,纯文本,doc,音频,视频等等
字符流:文本文件,只能处理文本文件
(3)功能:
节点:包裹源头
处理:增强功能,提供性能
3.字符流与字节流及文件
(1)字节流:
输入流:->InputStream:read(byte[] b),read(byte[] b,int off,int len),close();
->FileInputStream
输出流:->OutputStream:write(byte[] b),write(byte[] b,int off,int len),flush(),close(); ->FileOutputStream
(2)字符流:
输入流: ->Reader:read(char[] cbuf),read(char[] cb,int off,int len ),close();
->FileReader
输出流:->Writer:write(char[] cbuf),write(char[] cbuf,int off,int len),flush(),close();->FileWriter
4.操作:
读取文件->建立与文件的联系->选择对应流->读取/写出->定义数组大小->读取/写出->释放资源
话不多讲上代码:
1 package com.etc; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 /* 8 * 两个常量:路径分割符,文件分割符:File.pathSeparator(),File.Separator(); 9 * 文件的读取,写入,创建 10 * 操作目录:mkdir(),父目录必须存在,如果不存在创建失败,mkdirs(),无要求,若父目录不存在直接新建,相当于新建一条文件目录链 11 * list(),返回文件名,目录名的字符串形式,需用数组进行存储。 12 * listFiles();返回子文件或子目录的抽象File对象,可利用for循环获取相关信息 13 */ 14 public class FileIO { 15 16 public static void main(String[] args) throws IOException { 17 System.out.println("***文件读取***"); 18 readFile(); 19 System.out.println("***文件目录查看***"); 20 showDir(); 21 System.out.println("***创建目录***"); 22 makeDir(); 23 System.out.println("***获取文件部分信息***"); 24 getfileInfo(); 25 System.out.println("***简单信息写入文件***"); 26 writeFileTest(); 27 System.out.println("***输入流数据写入输出流***"); 28 writeFileFromInputStream(); 29 30 } 31 public static void readFile() throws IOException { 32 //相对路径,直接从当前工作目录读取路径 33 String path="test.txt"; 34 File file=new File(path); 35 //文件写入io流,然后写入byte数组,转String字符串输出 36 FileInputStream fis=new FileInputStream(file); 37 //建立缓冲区大小与文件大小一致 38 byte[] b=new byte[fis.available()]; 39 fis.read(b); 40 //关闭流 41 fis.close(); 42 System.out.println(new String(b)); 43 } 44 public static void showDir() { 45 //建立路径并将其文件引入 46 String path="E:\\Pythoncodes"; 47 File file=new File(path); 48 //判断文件是否存在 49 System.out.println(file.exists()); 50 //判断是否为目录 51 System.out.println(file.isDirectory()); 52 //获取绝对路径 53 System.out.println(file.getAbsolutePath()); 54 System.out.println("************************"); 55 //利用String 数组存放文件名和目录名 56 String[] src=file.list(); 57 //循环遍历 58 for(String name:src) { 59 System.out.println(name); 60 } 61 System.out.println("************************"); 62 //另一种形式获取 63 File[] sf=file.listFiles(); 64 for(File name:sf) { 65 System.out.println(name); 66 } 67 } 68 //新建目录/新建目录链 69 public static void makeDir() { 70 String path="E:/span/test"; 71 File file=new File(path); 72 //由于span目录不存在,所以调用file.mkdir()并没有真正实现目录的创建 73 boolean bo=file.mkdir(); 74 System.out.println(bo?"成功":"失败"); 75 boolean bool=file.mkdirs(); 76 System.out.println(bool?"成功":"失败"); 77 } 78 //获取当前文件的具体信息 79 public static void getfileInfo() { 80 String path="F:/test.txt"; 81 File file=new File(path); 82 //获取相对路径 83 System.out.println(file.getParent()); 84 //获取文件袋绝对路径 85 System.out.println(file.getAbsoluteFile()); 86 //判断是否为绝对路径 87 System.out.println(file.isAbsolute()); 88 } 89 //将信息写入文件 90 public static void writeFileTest() throws IOException { 91 String path="E:/test2.txt"; 92 File file=new File(path); 93 //定义输出流将信息存放至指定文件下 94 FileOutputStream in=new FileOutputStream(file); 95 //初始化输入数据->byte的数字范围-128~127 96 byte[] b=new byte[50]; 97 for(byte i=0;i<50;i++) { 98 b[i]=i; 99 } 100 in.write(b); 101 //关闭资源 102 in.close(); 103 104 } 105 //从输入流读取数据放入输出流然后写入新文件 106 public static void writeFileFromInputStream() throws IOException { 107 //定义读取文件路径 108 String readpath="E:/Test3.txt"; 109 //定义写入文件路径 110 String writepath="E:/Test4.txt"; 111 //路径引入,文件获取 112 File fileIn=new File(readpath); 113 File fileOut=new File(writepath); 114 //文件输入流 115 FileInputStream inStream=new FileInputStream(fileIn); 116 //定义缓冲区大小 117 byte[] b=new byte[inStream.available()]; 118 //读入流 119 inStream.read(b); 120 //关闭流 121 inStream.close(); 122 //文件输出流 123 FileOutputStream outStream=new FileOutputStream(fileOut); 124 //写入流 125 outStream.write(b); 126 //关闭流 127 outStream.close(); 128 } 129 }
效果截图:
1.控制台:
2.具体文件:
ps:截图有点乱,有点难看,不过还是有实现简单的上述的功能,若存在问题欢迎大佬指点,必虚心改正。
原文:https://www.cnblogs.com/weekstart/p/10794195.html