java-IO流之文件操作

简述:

1.流:从一端移动到另一端,源头与目的地

2.Io流分类:

(1)流向:输入流,输出流

(2)数据:

字节流:二进制,可以一切文件,包括,纯文本,doc,音频,视频等等

字符流:文本文件,只能处理文本文件

(3)功能:

节点:包裹源头

处理:增强功能,提供性能

3.字符流与字节流及文件

扫描二维码关注公众号,回复: 6067686 查看本文章

(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:截图有点乱,有点难看,不过还是有实现简单的上述的功能,若存在问题欢迎大佬指点,必虚心改正。

 

猜你喜欢

转载自www.cnblogs.com/weekstart/p/10794195.html