Java输入输出流
内容纲要
File类
- 在Java中,使用java.io.File类对文件进行操作。
package File;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
public class FileTest {
public static void main(String[] args) throws IOException {
/*
todo 创建File对象
* 1.File file = new File("E:\\Java\\javafile.txt");
* 2.File file = new File("E:\\Java","javafile.txt");
* 3.File file = new File("E:\\Java");
* File file1 = new File("javafile.txt");
*/
File file = new File("E:\\Java\\javafile.txt");
/*
todo 判断是否为目录
* isDirectory()
* 判断是否为文件
* isFile()
* 返回值都为布尔类型
*/
System.out.println(file.isDirectory());
System.out.println(file.isFile());
// todo 创建文件
File file1 = new File("E:\\Java", "HashSet");
// 判断目录是否存在
if (!file1.exists()){
// 创建Hashset目录
file1.mkdir();
// 创建多级目录使用
file1.mkdirs();
}
// todo 创建文件
if (!file.exists()){
try {
file.createNewFile();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
绝对路径与相对路径
方法 | 说明 |
---|---|
isAbsolute() | 判断是否是绝对路径 |
getPath() | 获取相对路径 |
getAbsolutePath() | 获取相对路径获取绝对路径 |
getName() | 获取文件名 |
字节流
- 字节输入流:InputStream
- 文件输入流:FileInputstream
- 管道输入流:PipedInptStream
- 过滤器输入流:FilterInputStream
- 回压输入流:PushbackInputStream
- 缓冲输入流:BufferedInputStream
- 数据输入流:DataInputStream
- 对象输入流:ObjectInputStream
- 顺序输入流:SequenceInputSream
- 字节数组输入流:ByteArrayInoutStream
- 缓冲字符输入流:StringBufferInputStream
- 字节输出流:OutputStream
- 文件输出流:FileOutStream
- 管道输出流:PipedOutStream
- 过滤器输出流:FilterOutStream
- 格式化输出流:PrintStream
- 缓冲输出流:BufferedOutStream
- 数据输出流:DataOutStream
- 对象输出流:ObjectOutStream
- 字节数组输出流:ByteArrayOutStream
FileInputStream
- 从文件系统中的某个文件中或得输入字节
- 用于读取诸如图像数据之类的原始字节流
方法名 | 描述 |
---|---|
public int read() | 从输入流中读取一个数据字节 |
pubilc int read(byte[] b) | 从输入流中将最多b.lengthge字节的数据读入一个byte数组中 |
public int reas(byte[] b,int off,int len) | 从输入流中将最多len个字节个数据读入byte数组中 |
pubilc void close() | 关闭此文件输入流并释放与此流有关的所有系统资源 |
如果返回值为-1.则表示已经达到了文件末尾
FileOutputStream
方法名 | 描述 |
---|---|
public int write() | 将制定字节写入此文件输出流 |
pubilc int write(byte[] b) | 将b.lengthge字节从指定byte数组中写入此文件中 |
public int write(byte[] b,int off,int len) | 将指定byte数组中从偏移量off来时len个字节写入此文件输出流 |
pubilc void close() | 关闭此文件输入流并释放与此流有关的所有系统资源 |
缓冲流
- 缓冲输入流:BufferedInputStream
- 缓冲输出流:BufferedOutStream
package File;
import java.io.*;
public class Buffered {
public static void main(String[] args) {
try{
FileOutputStream fileOutputStream = new FileOutputStream("E:\\Java\\javafile.txt",true);//表示以追加的方式写入,默认为false
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
FileInputStream fileInputStreamnew = new FileInputStream("E:\\Java\\javafile.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStreamnew);
bufferedOutputStream.write(97);
bufferedOutputStream.write('a');
bufferedOutputStream.flush();
System.out.println(bufferedInputStream.read());
System.out.println((char)bufferedInputStream.read());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流
- 字符输入流:Reader
- BuffeerReader
- LineNumberReader
- CharArrayReader
- StringReader
- InputStreamReader
- FileReader
- PipedReader
- FilterReader
- PushbackReader
- BuffeerReader
- 字符输出流:Writer
- BuffeerWriter
- CharArrayWriter
- StringWriter
- OutputStreamWriter
- FileWriter
- PipedWriter
- FilterWriter
字节字符转换流
- InputStreamReader
- OutputStreamWriter
FileInputStream fis = new FileInputStream("imooc.txt");
InputStreamReader isr = new InputSreamReader(fis);
FileOutputStream fos = new FileOutputStream("imooc1.txt");
OutputSteamWriter osw = new OutputStreamWriter(fos);
其他字符流
- 字符流的读文件类:FileWirte
- 字符流的写文件类:FileReader
对象序列化
步骤:
1.创建一个类,继承Serializable接口
2.创建对象
3.将对象写入文件
4.从文件读取对象信息
对象的读写涉及的两个类:
- 对象输入流ObjectOutputStream
- 对象输出流ObjectInputStream
共有 0 条评论