-
字节流之文件输出流——FileOutputStream 1.FileOutputStream是OutputStream的子类,实现了向文件中写入数据。 2.对一个文件进行写操作需要创建FileOutputStream对象 FileOutputStream out = new FileOutputStream(fileName);//文件不存在,创建;文件存在,删除之后创建 FileOutputStream out = new FileOutputStream(fileName, true);//文件不存在,创建;文件存在,追加 out.write('A');//写一个字符,写入低8位 //写一个字节数组 byte[] gbk = "中国".getBytes("gbk"); out.write(gbk); 3.copy一个文件内容到另一个文件 public static void copyFile(File srcFile, File destFile) throws IOException{ FileInputStream in = new FileInputStream(srcFile); //srcFile是读出文件 FileOutputStream out = new FileOutputStream(destFile); //destFile是写入文件,如果不存在会直接创建 byte[] buf = new byte[8*1024]; int b; while((b = in.read(buf,0, buf.length)) != -1){ //从输入流中读出字节填充到buf的0~结尾位置 out.write(buf, 0, b); //将字节数组中0~结尾位置的字节流写入到输出流 out.flush(); //最好加上 } in.close(); out.close(); }查看全部
-
DataOutputStream和BufferedOutputStream查看全部
-
字节流之文件输入流——FileInputStream 1.FileInputStream是InputStream的子类 具体实现了在文件上读取数据 2.从文件读取数据,并按照16进制输出到控制台 public static void printHex(String fileName) throws IOException{ //使用FileInputStream对象读文件 FileInputStream in = new FileInputStream(fileName); int b, i =1; while((b=in.read())!=-1){ //判断是否读到文件结尾 System.out.print(Integer.toHexString(b)+" "); if((i++%10) == 0) System.out.println(); } } 3.从文件读取数据到字节数组中 public static void printHexByByteArray(String fileName) throws IOException{ FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[1024]; int bytes = 0; int i=1; //批量读取数据到字节数组中,可以指定开始位置和长度 while((bytes=in.read(buf, 0, buf.length))!=-1){ for (int j=0;j<bytes;j++) { System.out.print(Integer.toHexString(buf[j] & 0xff)+" "); if((i++%10) == 0) System.out.println(); } } in.close(); } 4.这两个读数据的方法区别在于: 批量读取到字节数组时,效率更高,应用更广泛。 注意: 用完FileInputStream完之后,要关闭。查看全部
-
字节IO流 1.主要内容如图 注意:InputStream和OutputStream是两个抽象类 键盘是输入文件,从键盘读数据写入file查看全部
-
FileInputStream:具体实现了在文件上读取数据查看全部
-
IO流分为输入流、输出流 还有字节流、字符流 1、字节流: (1)InputStream:抽象了应用程序读取数据的方式 (2)OutputStream:抽象了应用程序写 出数据的方式 2)EOF = End 读到-1就读到结尾 3)输入流基本方法 int b = in.read();读取一个字节无符号填充到int低八位.-1是EOF in.read(byte[] buf) 读取数据填充到字节数组buf in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据 4)输出流基本方法 out.write(int b)写出一个byte到流,b的低8位 out.write(byte[] buf)将buf字节数组都写到流 out.write(byte[] buf, int start,int size) 字节数组buf从start位置开始写size长度的字节到流查看全部
-
RandomAccessFile类 1.主要内容(如图) 2.需要强调: (1)磁盘文件是字节存储的 (2)打开文件要指定读写模式 new RandomAccessFile(file, "rw"); (3)写方法一次写一个字节 (4)读也是一次读一个字节 (5)读写完毕后一定要关闭文件,否则会出现意外的错误 3.创建一个RandomAccessFile对象 RandomAccessFile raf = new RandomAccessFile(fileDemo, "rw"); raf.write('a'); //写字符,一次写一个字节 raf.writeInt(0x7fffffff);//写一个int,一次写完 //写一个字节数组,一次写完 String s = "中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); //写一个字节数组 //读文件到字节数组,一次读多个字节 //读文件 raf.seek(0); //设置文件指针位置为开头 byte[] buf = new byte[(int) raf.length()]; raf.read(buf); //文件所有内容读到buf字节数组中 注意: 这个过程下来,共写入7个字节。 不再读写时,需要raf.close()关闭文件。查看全部
-
单字节读取 不适合读取较大的文件查看全部
-
FileInputStream 具体了应用程序在文件上的读取数据查看全部
-
字节流 InputStream OutputStream 他们都是抽象类 InputStream 抽象了应用程序读取数据 OutputStream 抽象了应用程序写出数据查看全部
-
xx.seek() 指针定位查看全部
-
XX.write(int) 写一个字节(后八位) pointer向后移动 int i = xx.read(); 读一个字节 pointer向后移动查看全部
-
RandomAccessFile raf = new RandomAccessFile(file,"rw"); file: 打开的文件 "rw": 打开文件的模式 有两种 rw和r 注:因为是随机读写文件 所以包含一个指针 打开文件时 指针在开头查看全部
-
打开文件的方式 rw r 方式查看全部
-
RandomAccessFile 可以随机访问文件查看全部
举报
0/150
提交
取消