JAVA 基础之 IO复习

本文介绍了Java中File类的基本用法,包括文件与目录的创建、删除及列举目录下的文件等内容,并通过实例展示了如何使用RandomAccessFile进行指定位置的数据读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、文件:

在IO包中唯一与文件相关的类就是 File类。
File类中常用的常量和方法

1、创建文件:
指定路径和将要创建的文件名字以及类型;
然后调用 createNewFile()方法
File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator+"hello.java");
  file.createNewFile();

2、删除文件:
指定路径和文件,包括类型属性,
然后调用 delete()方法。
File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator+"hello.java");
 file.delete ();

3、创建文件目录:
设定路径后,调用mkdir()方法
如在“D:\MyJavaProgram”这个路径下创建一个名叫“hello”的文件夹,那么程序如下:
File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator+"hello");
  file.mkdir();
4、列出指定目录下的全部文件:
File类中有两个方法: 
  • public String[] list()
  • public File[] listFiles()
第一个是列出该目录下全部文件的名字,不包含属性,也就是说,我看到的是hello这个文件名,而不晓得它是word还是txt文本;
第二个则是以目录的形式,包含属性和名称,以File文件数组的形式
第一个示例如下:
public class FileDemo2{
 public static void main(String[] args){
  File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator);
  String[] str = file.list();
 
  for(int i =0; i< str.length;i++){
   System.out.println(str[i]);
   }
 }
}
第二个示例如下:
import java.io.*;
public class FileDemo2{
 public static void main(String[] args){
  File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator);
  File[] str = file.listFiles();
 
  for(int i =0; i< str.length;i++){
   System.out.println(str[i]);
   }
 }
}
运行结果:


二、使用RandomAccessFile来写入读取指定位置的数据
以上File只是用来创建管理文件等, 但是向文件中写入读取数据,还是得借助其他类对象。RandomAccessFile类就是用来写入读取指定位置的数据的
RandomAccessFile类主要完成随机读取功能,可以读取制定位置的内容。



因为在文件中,所有的内容都是按照字节存放的,如一个int 整型数就是占据4个字节。
从上面常用的方法表中可以看到,RandomAccessFile类中有两个构造方法。
例如,现在用第一个构造方法来完成一个写入字符串和整数的操作——
import java.io.*;
public class RandomAccessFileDemo{
 public static void main (String args[])throws Exception{
 
  File file = new File("d:"+File.separator+"MyJavaProgram"+File.separator+"test.txt");
  //读写模式,如果文件不存在则自动创建
  RandomAccessFile ramdomFile = new RandomAccessFile(file,"rw");
  //写入2个数据
  String name = "girl";
  int love = 25257758;
  //写字符串用writeBytes方法
  ramdomFile.writeBytes(name);
  //写整型数,用writeInt方法
  ramdomFile.writeInt(love);
  //对文件的读写操作完成后一定要记得关闭
  ramdomFile.close();
 
 }
}

结果:

好,现在再演示如何读取指定位置的数据
现在跳过前面“girl”这4个字节,直接读取后面的数字
import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo{
 
 public static void main(String args[]) throws Exception{
 File file = new File("d:"+File.separator+"MyJavaProgram"+File.separator+"test.txt");
  //读写模式,如果文件不存在则自动创建
  RandomAccessFile randomFile = new RandomAccessFile(file,"rw");
  //读取字符串后面的数字,得先跳过前面的字符串(占4个字节)
  randomFile.skipBytes(4);
  int i = randomFile.readInt();
  //输出所读到的值
  System.out.println("读到的数字是:"+i);
  //再回头读字符串,用seek方法设置指针位置
  randomFile.seek(0);
  byte[] temp = new byte[4];
  for(int j = 0;j< temp.length;j++){
   temp[j] = randomFile.readByte();
  }
  //转化为字符串
  String s = new String(temp);
  System.out.println("读到的字符串是:"+ s);
  //System.out.println("读到的字符串是"+s);
  //对文件的读写操作完成后一定要记得关闭
  randomFile.close();
 }
};

运行结果是:

这中间遇到了一个问题就是在用System.out.println()
打印输出中文,总是报告编码警告:


后来确实是编码格式问题,解决方法是:用记事本打开java源文件,然后另存为,选择 ANSI编码,覆盖,然后再次编译,即可消除警告或者错误。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值