java IO 详解(一)
来源:互联网 发布:卫视直播软件哪个好 编辑:程序博客网 时间:2024/05/22 17:49
java I/O 详解
流的概念
- 流就是由一组字节或字符组成的、有起点和终点的数据
- 流的特点是数据的发送和获取都是沿数据序列顺序进行的,每个数据必须等待他前面的数据发送或读入后才能被读写
- Java的输入与输出以字节流(二进制)或字符流(文本)的方式进行
使用流的一般过程
- 使用流的构造方法创建流,选择是输入流或输出流
- 使用流提供的方法,进行读写等操作
- 使用完流后,用close方法关闭流
File类
File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,不涉及对文件的读写操作
构造方法有3个:
File(String filename)
File f1 = new File(”c:\\temp”);//创建目录对象File f2 = new File(”c:\\temp\\abc.txt”); //创建文件对象
注:linux系统和windows系统的文件路径表示方法不一样
File(String directoryPath, String filename)
File(File f, String filename)
文件类的属性
- canRead(): 文件是否可读
- canWrite():文件是否可写
- delete(): 删除文件或目录
- exists: 文件或目录是否存在
- getName(): 获得文件或目录的名称(不包括路径)
- isFile(): 连接的是否是文件(isDirectory()是否是目录)
- length(): 文件的大小(byte)
- getAbsolutePath(): 获得文件的绝对路径
- lastModified(): 获取文件的最后修改时间
import java.io.*;class FileDemo{ public static void main( String[] args ) { File file = new File( "test.txt" ); //step1: if( file.exists() ){//判断是否存在 System.out.println( "文件 " + file.toString() + " 存在" ); }else { System.out.println( "文件:" + file.toString() + " 不存在" ); } if( file.isFile() ) { //判断是否是文件 System.out.println( file.toString() + " 是文件" ); }else { System.out.println(file.toString() + " 不是文件" ); } System.out.println( "文件名:" + file.getName()); System.out.println( "文件的绝对路径:" + file.getAbsolutePath()); System.out.println( "文件大小(单位字节):" + file.length()); File[] roots = File.listRoots();//根目录下的文件 for (int i = 0; i < roots.length; i++) { System.out.println(roots[i]); System.out.println(); } } }
运行结果:
目 录
- mkdir(): 创建一个目录
- listFiles(): 返回目录下的全部File文件
- listFiles(FilenameFilter obj): 返回目录下指定类型的所有File文件
文件的创建与删除
createNewFile(): 创建一个文件对象
File f = new File(“C:\\myletter”, “letter1.txt”);f. createNewFile();
delete(): 删除文件
File f = new File(“C:\\myletter”, “letter1.txt”); f.delete();
InputStream类
它是一个抽象类,作为其它输入流类的基类,定义了读取字节流的基本方法
常用方法如下:
- int read():从输入流中读一个字节,返回0-255的整数(内容的unicode码)。如果已经到达流末尾而没有可用的字节,则返回值-1
- int read(byte b[]):读取多个字节到数组中
- int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取到的字节数
- void close():关闭此输入流(重要)
常用子类:
- FileInputStream:从某个文件中获得字节
- DataInputStream:允许应用程序以与机器无关方式从底层输入流中读取基本数据类型
- ObjectInputStream:对对象进行反序列化
- ByteArrayInputStream:该类包含一个内部缓冲区,缓冲区中所存储的是从流中读取的字节
- SequenceInputStreamFilterInputStream
import java.io.*;public class ReadFile{ public static void main(String args[ ]) { int b; byte tom[ ]=new byte[25]; try { File f=new File(“test.txt"); FileInputStream in=new FileInputStream(f); //1. 创建输入流 while((b = in.read(tom, 0, 25))!=-1) //2. 使用输入流读 { String s = new String(tom, 0, b); System.out.print(s); } in.close(); //3. 关闭输入流 } catch(IOException e) { System.out.println("File read Error"+e); } }}
test.txt文本内容:
运行结果:
OutputStream类
它是其它输出流类的基类,定义了将数据流写到输出设备的基本方法
主要方法如下:
- void write(int b):将指定的字节写入此输出流
- void write(byte[] b):将b.length个字节从byte数组写入此输出流
- void write(byte[] b, int off, int len):将byte数组中从偏移量off开始的len个字节写入此输出流
- void flush():刷新此输出流并强制写出所有缓冲的输出字节。该方法对任何输出流都是适用的
- void close():关闭此输入流
OutputStream的常用子类有:
- FileOutputStream:用于将数据写入某个文件中的输出流
- DataOutputStream:允许应用程序将基本数据类型写入输出流中
- ObjectOutputStream:对象的序列化
- ByteArrayOutputStream:此类实现了一个输出流,其中的数据被写入一个byte数组,缓冲区会随着数据的不断写入而自动增长。可使用toByteArray和tostring方法获取数据
- FilterOutputStream
public class FileCopy {//该程序完成文件复制功能 public static void main(String [] args){ FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; try{ fileInputStream = new FileInputStream("FileCopyIn.java "); fileOutputStream = new FileOutputStream("FileCopyOut.java"); int temp; while((temp=fileInputStream.read())!=-1) fileOutputStream.write(temp); //逐字节写入 }catch(IOException e){ } //自己添加内容,查看异常 finally{ try { if(fileInputStream != null) fileInputStream.close(); if(fileOutputStream != null) fileOutputStream.close(); } catch (IOException e) { } } }}```javaimport java.io.*; //System.in的使用public class SaveTyping{ public static void main(String args[]) { int b; byte buffer[ ]=new byte[100]; try { System.out.println("输入一行文本,并存入磁盘:"); b = System.in.read(buffer); //保存键盘敲入的字符 FileOutputStream writefile = new FileOutputStream("line.txt"); writefile.write(buffer,0,b); // 把 buffer中的内容写入到文件 } catch(IOException e) { System.out.println("Error "+e); } }}
阅读全文
1 0
- java IO 详解(一)
- Java之IO详解(一)
- Java之IO详解(一):
- java之IO流详解(一)
- java IO流详解(一)
- JAVA学习笔记之IO详解一
- java io流详解(一)
- Java—IO流详解(一)
- java的IO流详解(一)
- JAVA IO流最详解(一)
- JAVA【IO一】IO流
- 详解Java 流(Stream)、文件(File)和IO(一)
- Java IO(一)
- java.io(一)
- IO读写(一) java
- Java IO 一
- Java IO(一)
- Java--IO(一)
- 今天是我第一天开通CSDN博客
- 计算机网络实验五:写一个PING程序
- js-手机号格式检查
- 统计学习方法
- 上一张 下一张
- java IO 详解(一)
- Git commands
- DNS相关的一些知识
- 改进排序算法:堆排序(对简单选择排序的改进)
- 继承和多态
- uvalive 3266
- 解决Could not resolve host: github.com; Unknown error
- Mysql分页处理(PageHelper)
- UML基础小结