Java常用-IO

Java常用-IO

数据传输操作可以看做一种数据的流动 , 按照流动的方向分为输入Input和输出Output;

Java中的IO操作主要指的是 java.io包下的一些常用类的使用. 通过这些常用类对数据进行读取(输入Input) 和 写出(输出Output);

 *     字节流:
 *          -   输入流 :   InputStream
 *          -   输出流 :   OutputStream
 *     字符流:
 *          -   输入流 :   Reader
 *          -   输出流 :   Writer

计算机磁盘是只能存储 0 和 1 的,然后这种最简单序列的就算是字节流(二进制),多个字节通过一个特定的的编码规范(比如ASCII码)用来表示一个特定的字符,字符组成的序列就是字符流,不同的编码规范大都是不兼容的,因此读取不同编码规范的字符很容易会发生乱码。

各个不同的国家一般都会有自己的一套编码,比如国内常见的就是国标码,国标码是汉字的国家标准编码,目前主要有GB2312、GBK、GB18030三种。国际通用的Unicode(统一码、万国码、单一码)常见的有UTF-8。

首先看来自菜鸟教程的一张图:
IO流
- BufferedReader-读取控制台输入
Java 的控制台输入由 System.in 完成。可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。

char c;
String str;
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 读取单个字符
c = (char) br.read();
// 读取一行字符
str = br.readLine();
System.out.println(c);
System.out.println(str );

- FileInputStream-文件读取流

//直接通过路径创建
InputStream f = new FileInputStream("C:/java/hello");
//通过文件对象创建
File f = new File("C:/java/hello");
InputStream out = new FileInputStream(f);
//循环读单个字节 read() 类似指针,调用之后会后移
while (true){
    byte b = (byte) out.read();
    if(b==-1)
        break;
}
//读取指定位置字节
byte byteb = (byte) out.read(2);
//读取一段字节到数组中 返回成功读取的字节数量
byte[] bytes = new byte[10];
int len = fis.read(bytes);
//释放资源
fis.close();

-FileOutputStream-文件写入流

//创建方式与 FileInputStream 一样
//通过文件对象创建
File newFile = new File(oldFile.getParent(),"mi-"+oldFile.getName());
FileOutputStream fos = new FileOutputStream(newFile);
//写入单个字节
fos.write(b);
//释放资源
fos.close();

-菜鸟教程的实例

File f = new File("a.txt");
// 构建FileOutputStream对象,文件不存在会自动新建
FileOutputStream fop = new FileOutputStream(f);
// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 写入到缓冲区
writer.append("中文输入");
// 换行
writer.append("\r\n");
// 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
writer.append("English");
// 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
writer.close();
// 关闭输出流,释放系统资源
fop.close();
// 构建FileInputStream对象
FileInputStream fip = new FileInputStream(f);
// 构建InputStreamReader对象,编码与写入相同
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
  // 转成char加到StringBuffer对象中
  sb.append((char) reader.read());
}
System.out.println(sb.toString());
// 关闭读取流
reader.close();
// 关闭输入流,释放系统资源
fip.close();

-File-文件

//可以是文件 也可以是文件夹
File d = new File(dirname);
//判断是不是文件夹
d.isDirectory();
//方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
d.mkdir( );
//方法创建一个文件夹和它的所有父文件夹。
d.mkdirs();
//提取包含的文件和文件夹的列表。
d.list();
//以下代码会删除目录 /tmp/java/,需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。
d.delete() 方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值