JavaIO流基础之文件读写
来源:互联网 发布:淘宝查询信誉网站 编辑:程序博客网 时间:2024/04/30 03:00
File类
从jdk文档上描述,File类是文件和目录路径名的抽象表示形式。简单明了。
在创建File的时候指定路径就好了。
File file = new File("H:\\file.txt");//绝对路径 File file = new File(".\\file.txt");//当前文件夹下
getCanonicalPath方法可以获取完整的路径。
File类不单是文件,也可以是目录。
file.isDirectory();//判断是否为目录 file.isFile();//判断是否为文件
如果指定路径的文件不存在,进行读写操作,是会抛出FileNotFoundException异常。所以以防万一,最好先判断是否存在,不存在则创建。
if(!file.exists()){//判断是否存在 try { file.createNewFile();//创建文件 } catch (IOException e) { } }
创建目录也差不多
if (!file.exists()) {//判断是否存在 file.mkdir();//创建目录 }
使用上面的方法创建多层不存在的目录,并不能一口气写下不存在的路径。因为系统会找不到指定路径。那就循环创建吧,不,jdk有提供一个方法可以解决这个问题。就是在mkdir加多一个s。
if (!file.exists()) {//判断是否存在 file.mkdirs();//创建目录(包括不存在) }
删除很简单
if (!file.exists()) {//判断是否存在 file.delete();//删除 }
读写
使用字节流读
FileInputStream fis = null; ByteArrayOutputStream baos = null; try { fis = new FileInputStream(file); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[1024]; while ((len = fis.read(buf)) != -1) { baos.write(buf, 0, len); } System.out.println(baos.toString());//把txt内容显示在控制台 } catch (FileNotFoundException e) { } catch (IOException e) { } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { } } if (baos != null) { try { baos.close(); } catch (IOException e) { } } }
使用字节流写
ByteArrayInputStream bais = null; FileOutputStream fos = null; try { fos = new FileOutputStream(file,append);//append是否追加数据 bais = new ByteArrayInputStream("Hello".getBytes());//写入hello int len = -1; byte[] buf = new byte[1024]; while ((len = bais.read(buf)) != -1) { fos.write(buf, 0, len); } } catch (FileNotFoundException e) { } catch (IOException e) { } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { } } if (bais != null) { try { bais.close(); } catch (IOException e) { } } }
操作都很简单,实现的方式有很多。个人喜欢使用ByteArray字节流来操作IO,熟知这个就基本够了。大家也可以使用其他方式实现。
RandomAccessFile类
java.io包下,还有一个RandomAccessFile类,跟File类没有继承关系的。从名字上意为随机访问文件。简单来说,里面包装输入输出流,还有存在指向该隐含数组的光标或索引,称为文件指针。所以可以在文件长度内指定位置读写,通常用于断点传输数据,比如下载软件暂停,继续下载会从原来的位置开始下载。
public RandomAccessFile(File file, String mode)//name 路径 mode 权限模式 public RandomAccessFile(String name, String mode)//name 路径 mode 权限模式
重载两个构造方法,其实指定路径,它自行创建File类和创建不存在的文件。mode参数指的是读写权限,只读——r,可读可写——rw。
RandomAccessFile raf = null; try { raf = new RandomAccessFile(file, "rw"); long len = raf.length(); //获取文件长度 long curPos = raf.getFilePointer(); //获取当前指针位置 raf.seek(len / 2); //从文件一半的位置开始操作 ...//一堆的read、write } catch (FileNotFoundException e) { } catch (IOException e) { } finally { if (raf != null) { try { raf.close(); } catch (IOException e) { } } }
IO流基础讲完了,IO流并不难,基本都是这样。不足之处望指正。
2 0
- JavaIO流基础之文件读写
- 【Java】javaIO之用随机流读写文件
- javaIO流实现读写txt文件
- javaIO之文件字节流
- javaIO之文件字符流
- 【Java】javaIO之带缓冲流的字节流文件读写
- 【Java】javaIO之带缓冲流的字符流文件读写
- JavaIO流基础学习
- JavaIO之文件目录操作
- JavaIO流基础之字节流与字符流
- iOS基础之文件读写
- javaIO之对象流
- JavaIO流基础笔记(一)
- Java读写Properties文件及JavaIO中字节流和字符的转换
- JavaIO基础
- javaIO基础
- JavaIO怎么调用WindowsAPI的——从Native层剖析JavaIO文件读写
- javaIO流之File类
- 运维必修147个命令 只要我写上来的,我都会
- QGraphicsTextItem如何设置文本颜色?
- Git的一点简单命令及文档
- ButterKnife源码分析(二)
- python脚本内运行linux命令的方法
- JavaIO流基础之文件读写
- 神经网络与深度学习(2):梯度下降算法和随机梯度下降算法
- 再论C语言中的指针和数组
- Centos安装Django并创建项目
- 【数学】一个奇技淫巧:如果用一枚硬币生成任意概率——比如1/π?
- # Android文件存储和数据库基本知识
- 博客笔记图片
- bitset关于二进制运算
- 最长上升子序列的变化