作者:陈玲琳2013 | 来源:互联网 | 2024-12-06 19:26
简述:1.流:从一端移动到另一端,源头与目的地2.Io流分类:(1)流向:输入流,输出流(2)数据:字节流:二进制,可以一切文件,包括,纯文本,doc,音频,视频等等字符流:文本文
简述:
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:截图有点乱,有点难看,不过还是有实现简单的上述的功能,若存在问题欢迎大佬指点,必虚心改正。