《java io包 1》

day17

课程

part1.File对象的创建和与它相关方法的使用

File对象

  • 1.一个File对象既可以表示文件,也可以表示目录,File类提供了很多操作文件和目录的方法
  • 2.需要注意的是:File对象并不能直接对文件进行读/写操作,只能查看文件的属性;
File file=new File("d:/test");
File file=new File("d:\\test");

上面是创建File对象的两种写法

boolean flag=file.isDirectory()

这个方法的作用是判断file是否是一个目录,返回值为boolean类型

System.out.println(file.length())

这个方法的作用是查看文件的长度

System.out.println(file.isFile)

这个方法的作用是查看file是否为一个文件,返回值也为boolean类型

String path=file.getPath()
String abpath=file.getAbsolutePath();

上面的两种方法主要是用来获取file对象的相对路径与绝对路径的

String name=file.getName();

这种方法用来获取file对象的文件名称

boolean flag=file.exists();

这种方法用来判断文件是否存在

try{
if(!file.exists()){
file.creatNewFile();
}else{
System.out.println("文件已存在");
}
}catch(Exception e){
e.printStackTrace();
}

上面举了一个例子来结束第一课时的讲解,上面程序达到的功能为如果file对象已经存在,则不进行任何操作,并给出提示,如果对象不存在,则创建新的对象

part2.字节输入输出流

InputStream:

  • 1.InputStream是一个抽象类,创建对象的时候一般都使用FileInputStream
  • 2.掌握InputStream的三个read()方法,注意返回值的含义
  • 3.InputStream不适合读取中文文件
  • 4.InputStream比较适合于读取视频文件,音频文件,图片等
    OutoutStream:
    1.无特别内容
File file=new File("d:/mytest.txt");
InputStream inputStream=new FileInputStream(file);
  InputStream inputStream=new FileInputStream("d:/mytest.txt");

上面是两种创建字节输入流对象的方法,第二种比较简便

int date=0;//表示读取的数据
  while((date=inputStream.read())!=-1){
   System.out.print((char)date);
  }

这是查看文件内容的第一种方式,直接用read()方法读取

int len=0;
byte b[]=new byte[10];
while((len=inputStream.read(b))!=-1){
       for(int i=0;i<len;i++){
             System.out.println((char)b[i]);
        }
}

这是查看文件内容的第二种形式,用read(byte b[ ])的方法去读

int len=0;
  byte b[]=new byte[10];
  while((len=inputStream.read(b,0,b.length))!=-1){
   for(int i=0;i<len;i++){
       System.out.print((char)b[i]);
   }
  }

这是查看文件的第三种形式

inputStream.close();

虽然在字节的输入输出流中关闭资源代码不会带来太大影响,但在字符中比较重要,需养成好习惯

OutputStream outputStream=new FileOutputStream("d:/mytest.txt");

创建字节输出流对象
当文件不存在时它会自动创建一个对象

String res="你好,我喜欢java";
//将字符串转换成数组
byte b[]=res.getBytes();
outputStream.write(b);
outputStream.close();

上面演示的是将字符串写入到文件中

part3.字符的输入输出流

Reader reader=new FileReader("d:/mytest.txt");

创建字符输入流

int data=0;
  while((data=reader.read())!=-1){
   System.out.print((char)data);
  }

第一种方式查看文件内容

int len=0;
  char c[]=new char[10];
  while((len=reader.read(c))!=-1){
   for(int i=0;i<len;i++){
    System.out.print((char)c[i]);
   }
  }

第二种方式查看文件内容

int len=0;
char c[]=new char[10];
while((len=reader.read(c,0,c.length))!=-1)
for(int i=0;i<len;i++){
System.out.print((char)c[i]);
}

第三种方式查看文件内容

 Writer writer=new FileWriter("d:/mytest456.txt");

创建字符输出对象

String resString="我的java课程";
writer.write(resString);

与字节不同的是,字符输出对象在进行字符串的写入时,可以直接将字符串导入到文件中

//刷新缓冲区
  writer.flush();
  //关闭资源
  writer.close();

最后不应忘了刷新缓冲区与关闭资源

练习

1.

try {
  File file=new File("d:/test1.txt");
  InputStream inputStream=new FileInputStream(file);
  System.out.println("可读取的字节数:"+file.length());
        int date=0;
        while((date=inputStream.read())!=-1){
         System.out.println("文件内容为:"+(char)date);
        }
 } catch (Exception e) {
  e.printStackTrace();
 }

这道题的结果为输出了文件内的字节数与文件内的内容

2.
try {
  OutputStream outputStream=new FileOutputStream("d:/test3.txt");
  String kkString="hello文件已更新";
  byte a[]=kkString.getBytes();
     outputStream.write(a);
     outputStream.close();
 } catch (Exception e) {
  e.printStackTrace();
 }

这道题的结果为成功创建了一个新的文件test3,并且将字符串hello文件已更新写入到了其中

3.
try {
  InputStream inputStream=new FileInputStream("d:/test1.txt");
  OutputStream outputStream=new FileOutputStream("d:/test3.txt");
  int len=0;
  byte b[]=new byte[10];
  while((len=inputStream.read(b,0,b.length))!=-1){
   outputStream.write(b,0,len);
  }
  outputStream.close();
  inputStream.close();
  System.out.println("复制完成,请查看文件!");
 } catch (Exception e) {
  e.printStackTrace();
 }

这道题完成了将一个文件的内容写入到了另一个文件中的功能

总结

今天主要讲解了File对象的创建与与File相关的方法的使用,还讲解了字节输入输出流的用法,字符输入输出流的用法,重点在于文件内容的查看,文件内容的添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值