OutputStream抽象类
JDK1.0开始使用。
public static void main(String[] args) throws Exception{
File file = new File("/Users/itkey/Documents/GitHub/java-review/src/main/java/com/itkey/javareview/温故知新/io"+File.separator+"yootk.txt");
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs(); //创建父目录
}
OutputStream outputStream = new FileOutputStream(file); //实例化OutputStream抽象类对象
String message = "www.yootk.com"; //此为要输出的数据内容
byte data[] = message.getBytes(); //将字符串转为字节数
outputStream.write(data); //输出全部字节数组的内容
outputStream.close(); //关闭输出流
}
范例:向文件之中进行内容的输出(追加)
public static void main(String[] args) throws Exception{
File file = new File("/Users/itkey/Documents/GitHub/java-review/src/main/java/com/itkey/javareview/温故知新/io"+File.separator+"yootk.txt");
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs(); //创建父目录
}
OutputStream outputStream = new FileOutputStream(file,true); //实例化OutputStream抽象类对象
String message = "www.yootk.com\n"; //此为要输出的数据内容
byte data[] = message.getBytes(); //将字符串转为字节数
outputStream.write(data); //输出全部字节数组的内容
outputStream.close(); //关闭输出流
}
InputStream 字节输入流
与OutputStream抽象类对应的另一个操作类就属于java.io.InputStream类,这个类可以基于字节的方式实现指定输入流数据的读取操作。
常用方法
package com.itkey.javareview.温故知新.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class 读取文件中的内容2 {
public static void main(String[] args) throws Exception {
StringBuffer buffer = new StringBuffer(); //保存读取到的内容
File file = new File("/Users/itkey/Documents/GitHub/java-review/src/main/java/com/itkey/javareview/温故知新/io" + File.separator + "yootk.txt");
if (file.exists()) {
//AutoCloseable写法
try (InputStream input = new FileInputStream(file)) {
byte data[] = new byte[8]; //开启1K的空间进行读取
int len = 0; //保存数据读取的个数
do {
len = input.read(data); //读取数据到字节数组并返回读取个数
if (len != -1) {
buffer.append(new String(data, 0, len));
}
} while (len != -1); //没有读取到底
//此时如果要读取的内容很大,但是所开辟的数组空间很小,这个时候肯定无法一次性进行数据的读取,那么就需要重复多次读取,而如果文件已经读取到底部的时候,调用read()方法返回的内容就是"-1"(不再是读取到的字节个数了)。
input.read(data); //读取数据到字节数组
System.out.println("读取到的数据内容【" + buffer.toString() + "】");
} catch (Exception e) {
}
}
}
}
精简写法:
package com.itkey.javareview.温故知新.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class 读取文件中的内容2 {
public static void main(String[] args) throws Exception {
StringBuffer buffer = new StringBuffer(); //保存读取到的内容
File file = new File("/Users/itkey/Documents/GitHub/java-review/src/main/java/com/itkey/javareview/温故知新/io" + File.separator + "yootk.txt");
if (file.exists()) {
//AutoCloseable写法
try (InputStream input = new FileInputStream(file)) {
byte data[] = new byte[8]; //开启1K的空间进行读取
int len = 0; //保存数据读取的个数
//第一个表达式input.read(data),将输入的数据读取到字节数组之中
//第二个表达式len = input.read(data),将读取到的数据长度赋值给len变量
//第三个表达式(len = input.read(data)!= -1))
while((len = input.read(data))!= -1){
buffer.append(new String(data,0,len));
}
System.out.println("读取到的数据内容【" + buffer.toString() + "】");
} catch (Exception e) {
}
}
}
}
Writer
package com.itkey.javareview.温故知新.io;
import java.io.*;
public class Reader读取文件中的字符 {
public static void main(String[] args) {
File file = new File("/Users/itkey/Documents/GitHub/java-review/src/main/java/com/itkey/javareview/温故知新/io" + File.separator + "yootk.txt");
if(file.exists()){
try (Reader in = new FileReader(file)){
char data[] = new char[1024];
int len = in.read(data);
System.out.println(new String(data,0,len));
}catch (Exception e){
}
}
}
}