参考链接: https://www.runoob.com/java/java-files-io.html
一, JAVA 的 IO 操作
由于 JAVA 引用外界的数据, 或是将自身的数据发送到外界, 这时我们需要使用输入与输出. 也就是 JAVA 的 IO.
字符流通常是对控制台文本输入 (Reader 控制台写入程序数据) 输出(Writer 往控制台输出数据),
字节流通常是对文件的写入 (InputStream 从文件中读取数据) 写出(OutputStream 向文件中写入数据).
1.1 读取控制台输入
用 system.in 读取控制台输入参数
- // 使用 BufferedReader 在控制台读取字符
- import java.io.*;
- public class BRRead {
- public static void main(String args[]) throws IOException {
- char c;
- // 使用 System.in 创建 BufferedReader
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- System.out.println("输入字符, 按下'q'键退出.");
- // 读取字符
- do {
- c = (char) br.read();
- System.out.println(c);
- } while (c != 'q');
- }
- }
1.2 控制台输出
控制台的输出由 print()和 println() 完成. 这些方法都由类 PrintStream 定义, System.out 是该类对象的一个引用.
PrintStream 继承了 OutputStream 类, 并且实现了方法 write().write() 方法不经常使用, 因为 print() 和 println() 方法用起来更为方便.
1.3 读写文件(输入流)
InputStream 是所有字节输入流的父类, 一个流被定义为一个数据序列. 输入流用于从源读取数据, 输出流用于向目标写数据.
FileInputStream 该流用于从文件读取数据, 它的对象可以用关键字 new 来创建.
- // 创建两种方式
- InputStream f = new FileInputStream("C:/java/hello");
- File f = new File("C:/java/hello");
- InputStream out = new FileInputStream(f);
InputStream 是所有字节输入流的父类, 创建了 InputStream 对象可调用的方法来读取流或者进行其他的流操作. read()是基础方法.
- // 关闭此文件输入流并释放与此流有关的所有系统资源. 抛出 IOException 异常.
- out.close();
- // 这个方法清除与该文件的连接. 确保在不再引用文件输入流时调用其 close 方法. 抛出 IOException 异常.
- out.finalize();
- // 这个方法从 InputStream 对象读取指定字节的数据. 返回为整数值.
- out.read(int r);
- // 读取 r.length 长度的字节
- int read(byte[] r)
- // 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数
- available();
除了 InputStream 外, 还有一些其他的输入流 ByteArrayInputStream,DataInputStream.
1.4 输出流(FileOutputStream)
OutputStream 是所有字节输出流的父类, write()是基础语法, 该类用来创建一个文件并向文件中写数据. 该类用来创建一个文件并向文件中写数据. 如果该流在打开文件进行输出前, 目标文件不存在, 那么该流会创建该文件.
- // 创建的两种方式
- OutputStream f = new FileOutputStream("C:/java/hello")
- File f = new File("C:/java/hello");
- OutputStream f = new FileOutputStream(f);
OutputStream 对象完成后, 就可以使用 close(),finalize(), write(int w),write(byte[] w).
还有其它输出流 ByteArrayOutputStream,DataOutputStream
- // 文件名 :IO 操作的例子
- import java.io.*;
- public class fileStreamTest2 {
- public static void main(String[] args) throws IOException {
- File f = new File("a.txt");
- FileOutputStream fop = new FileOutputStream(f);
- // 构建 FileOutputStream 对象, 文件不存在会自动新建
- OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
- // 构建 OutputStreamWriter 对象, 参数可以指定编码, 默认为操作系统默认编码, Windows 上是 gbk
- writer.append("中文输入");
- // 写入到缓冲区
- writer.append("\r\n");
- // 换行
- writer.append("English");
- // 刷新缓存冲, 写入到文件, 如果下面已经没有写入的内容了, 直接 close 也会写入
- writer.close();
- // 关闭写入流, 同时会把缓冲区内容写入文件, 所以上面的注释掉
- fop.close();
- // 关闭输出流, 释放系统资源
- FileInputStream fip = new FileInputStream(f);
- // 构建 FileInputStream 对象
- InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
- // 构建 InputStreamReader 对象, 编码与写入相同
- StringBuffer sb = new StringBuffer();
- while (reader.ready()) {
- sb.append((char) reader.read());
- // 转成 char 加到 StringBuffer 对象中
- }
- System.out.println(sb.toString());
- reader.close();
- // 关闭读取流
- fip.close();
- // 关闭输入流, 释放系统资源
- }
- }
1.5 文件和 IO 的操作
创建文件夹俩种方式
mkdir( )方法创建一个文件夹, 成功则返回 true, 失败则返回 false. 失败表明 File 对象指定的路径已经存在, 或者由于整个路径还不存在, 该文件夹不能被创建.
mkdirs()方法创建一个文件夹和它的所有父文件夹.
Filed=newFile(dirname);// 现在创建目录 d.mkdirs();
判断是否有目录, isDirectory() 方法会返回 true.
删除目录, deleteFolder(folder);
- ByteArrayInputStream
- DataInputStream
来源: http://www.bubuko.com/infodetail-3304429.html