- /**
- * 输入/输出流
- * InputSream:
- * ObjectInputStream //对象流
- * PipedInputStream //管道流
- * FileInputStream //文件流
- * ByteArrayInputStream //字节数组流
- * FilterInputStream //过滤流
- * DataInputStream //数据输入流
- * BufferedInputSteam //将数据写入缓冲区
- *
- *
- * 字符流的层次结构
- * Reader:
- * BufferedReader //用字符流写入缓冲区
- * InputStreamReader //用于将字节码 与 字符码 转换
- * FileReader //用于字符文件的输入
- *
- * 文件处理:
- * 创建文件对象:
- * 1、File(String path)
- * 2、File(String path, String name)
- * 3、File(File dir, String name)
- *
- * 创建文件 和 目录
- * 1、public boolean exists() //文件、目录 是否存在
- *
- * 2、public boolean isFile()
- * public boolean isDirectory() //判断是文件还是目录
- *
- * 3、public String getName()
- * public String getPaht() //获取文件名 或 目录
- *
- * 4、public long length() //长度
- *
- * 5、public boolean canRead() //文件是否 可读
- * public boolean canWrite() //文件是否可写
- *
- * 6、public String[] list() //列出目录中文件
- *
- * 7、public boolean equals() //比较文件 或 目录
- *
- * 文件目录操作
- * 1、public boolean renameTo(File newFile()) //重命名
- *
- * 2、public void delete() //删除
- *
- * 3、public boolean mkdir() //创建目录
- *
- *
- *8.2.2文件流
- *
- * 1、字节文件流读取文件
- *
- * FileIputStream
- * (1)FileInputStream(String filename) //指定的文件名,包括路径
- * (2)FileInputStream(File file) //指定文件对象
- * (3) FileDescriptor( FileDescritor fdObj) //指定文件描述符
- *
- * 从文件输入流中读取字节
- * int read()
- * int rean(byte[] b) //读到的数据直接写入字节数组b中
- * int read(byte[] b, int off, int len)
- *
- *示例:
- * public static void main(String[] args){
- * byte[] buffer = new byte[2056];
- * String str;
- * try{
- *
- * }
- * }
- *
- */
- /***字节文件输入流读取文件***/
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import javax.swing.JOptionPane;
- class Example{
- public static void main(String[] args){
- byte[] buffer = new byte[2056];
- String str;
- try{
- File file = new File("d:/jtest/test.dat");
- FileInputStream fileInput = new FileInputStream(file);
- //将数据读到 字节数组buffer中
- int bytes = fileInput.read(buffer, 0, 2056);
- //用字节数组buffer中的数据构建字符串
- str = new String(buffer, 0, bytes);
- }
- /***省略程序**/
- /***省略程序**/
- }
- }
- /***字节文件输出流写入文件***/
- /**
- * 把字节发送到文件输出流
- * write(int b) //将指定字节写入此文件输出流
- * write(byte[] b) //将b.length个字节从指定字节数组写入此文件输出流中
- * write(byte[] b, int off, int len) //将指定字节数组从偏移量off开始的len个字节写入
- * */
- 示例:
- import javax.swing.JOptionPane;
- import java.io.*;
- class FileRW{
- int bytes;
- byte buffer[] = new byte[65560];
- FileInputStream fileInput;
- FileOutputStream fileOutput;
- /**
- * 省略部分程序
- * */
- //将图像文件读取到字节数组中
- try{
- File file = new File("a.jpg");
- fileInput = new FileInputStream(file);
- //将文件a.jpg的数据读取到字节数组buffer中,
- bytes = fileInput.read(buffer, 0 ,65560);
- }
- //将字节数组的数据写入到文件b.jpg中
- try{
- fileOutput = new FileOutputStream("b.jpg");
- fileOutput.write(buffer, 0, bytes);
- }
- }
- /***字符文件流读写文本文件***/
- (1)FileReader和FileWriter
- FileReader(String filename)
- FileReader(File file)
- FileReader(FileDescriptor fdObj)
- 将字符输入或输出到缓冲区
- BufferedReader(Reader in)
- BufferedWriter(Reader out)
- (2)用字符流进行读写操作方法
- //从输入流中按行读取字符的方法
- String readLine()
- //向输出流写入多个字符的方法
- write(String s, int off, int len)
- //刷新缓冲区
- flush()
- //关闭流
- close()
- /****************/
- 示例:
- FileReader r_file;
- FileWriter w_file;
- BufferedReader buf_reader;
- BufferedWriter buf_writer;
- /**
- * 省略程序
- * */
- //读取文件
- try{
- File f = new File("D:/jtext/", "a.txt");
- r_file = new FileReader(f);
- buf_reader = new BufferedReader(r_file);
- }
- catch(IOException ef){System.out.println(ef);}
- try{
- while((s=buf_reader.readLine()) != null){
- txt.append(s + '\n');
- }
- }
- catch(IOException ef){Syte........}
- //写入文件
- try{
- w_file = new FileWriter("b.txt");
- buf_writer = new BufferedWriter(w_file);
- String str = txt.getText();
- buf_writer.write(str, 0, str.length());
- buf_writer.flush();
- }
- /****随即存取文件流***/
- *前面学的都是顺序访问的
- *随机存取可以访问任意位置的的数据
- (1)RandomAccessFile(String filename, String mode)
- (2)RandomAccessFile(File file, String mode)
- 示例:
- try{
- RandomAccessFile f = new RandomAccessFile("a.txt", "rw");
- f.writeBytes("zhang si ming");
- f.close();
- }
- /***本地可执行文件**/
- Runtime 类对象有几个常用方法:
- (1)exit(int status)
- //通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟机
- (2)getRuntime()
- //返回与当前Java应用程序相关的运行时对象,使用该方法创建Runtime类对象
- Runtime rt = Runtime.getRuntime()
- (3)exec(String command)
- //调用该方法可以再单独的进程中运行由字符串命令指定的本地机上的可执行文件
- (4)gc()
- //运行垃圾回收器
- 示例:
- /***调用windows系统自带的计算器***/
- try{
- Runtime rt = Runtime.getRuntime();
- rt.exec("C:/windows/system32/calc.exe");
- }
- /***数据流与对象流****/
- 构造方法:
- public DataInputStream(InputStream in);
- public DataOutputStream(OutputStream out);
- 示例:
- int bytes, f_length;
- byte[] buffer;
- FileInputStream fileInput;
- FileOutputStream fileOutput;
- DataInputStream dataInput;
- DataOutputStream dataOutput;
- File file = new File("ABC.mp3");
- //获取文件长度,设置数组容量
- f_length = (int)file.length();
- buffer = new byte[f_length];
- /***读取声音文件***/
- try{
- fileInput = new FileInputStream("ABC.mp3");
- dataInput = new DataInputStream(fileInput);
- bytes = dataInput.read(buffer);
- }
- /******写入到新文件*******/
- try{
- fileOutput = new FileOutputStream("新文件.mp3");
- dataOutput = new DataOutputStream(fileOutput);
- dataOutput.write(buffer, 0, bytes);
- }
- /***********对象流****************/
- 构造方法:
- ObjectInputStream(InputStream in);
- ObjectOutputStream(OutputStream out);
- //创建数据输入流
- FileInputStream file_in = new FileInputStream("sample.dat");
- ObjectInputStream object_in = new ObjectInputStream(file_in);
- 常用方法:
- readObject()
- writeObject()
- 对象序列化
- Serializable接口