一:输入输出流
●输入流:
常见的输入设备有键盘、扫描仪、文件等;

●输出流:
常见的输出设备有屏幕、打印机、文件等;

●文件,既可以作为输入设备,又可以作为输出设备:
文件作为输入设备时:是读取文件中的内容;即输入流是读取数据;
文件作为输出设备时:是写文件;即输出流是写数据,将一些数据写到文件中去;
二:File类
●什么是文件:文件可认为是相关记录或放在一起的数据的集合;
●Java中,使用java.io.File类对文件进行一系列的操作;Java中的File对象,不区分文件和目录,二者都是“文件”。
……………………………………………………
File类简介:
File类的构造方法:

File类的常用方法:主要目的是知道有这个方法,具体用的时候,如果不清楚再去查API:
●canRead():文件是否可以读;
●canWrite():文件是否可以写;
●exists():当前的文件或目录是否存在;
●getName():获取文件或路径的名称;
●isDirectory():是否是目录;(如果一个文件不存在,那么这个方法返回false)
●isFile():是否是文件;(File对象是不区分文件和目录的;)(如果一个文件不存在,那么这个方法返回false)
●lastModified():文件的最后一次修改时间;
●isHidden():是否是一个隐藏文件;
●midir():创建目录;
●midirs():创建多级目录;
等等,主要留个印象,知道File类可以干什么,然后具体应用时,不清楚可以去查API。
……………………………………………………
File示例:File类主要用于文件、目录的创建,并不涉及具体文件内容的读写
(1)三种创建File对象的方式:(File类的三种构造方法的演示):
public class FileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// (一)创建文件的第一种方式;(2)"\"本身是一个转义字符,两个反斜杠才代表一个反斜杠;(3)再Linux系统的写法:"c:/";
//File file1 = new File("c:\\imooc\\io\\score.txt");
// (二)创建文件的第二种方式;
//File file1 = new File("c:\\imooc","io\\score.txt");
// (三)创建文件的第三种方式;有些业务场景需要File的这种构造方法
File file = new File("c:\\imooc");
File file1 = new File(file,"io\\score.txt");
System.out.println(file1.exists());
System.out.println(file1.isFile());
System.out.println(file1.isDirectory());
}
}
……………………………………………………
(2)创建目录:mkdir()和mkdirs()
public class FileDemo {
public static void main(String[] args) {
// 创建一个目录
File file2 = new File("c:\\imooc\\set","HashSet");
// 如果文件不存在,再去创建;经过实测,如果去创建一个存在的目录,并不会引起什么问题,文件中的内容并没有消失;换句话说,创建一个已经存在的目录,并是把原文件夹删除然后再原样新建一个;
if(!file2.exists()){
file2.mkdir();// file2.mkdirs() 实测发现,创建单级目录时,也可以使用mkdirs()方法;
}
// 创建一个多级目录
File file3 = new File("c:\\imooc\\set\\LinkSet\\mm");
if(!file3.exists()){
file3.mkdirs();// 实测发现,如果是创建多级目录,调用mkdir()方法不会报错,也不会创建目录
}
}
}
……………………………………………………
(3)创建文件:createNewFile();(I/O异常是检查异常,需要捕获)
public class FileDemo {
public static void main(String[] args) {
// 创建文件
File file1 = new File("c:\\imooc\\io\\score.txt"); // 如果是"c:\\imooc\\io\\score",其还是会创建文件,只是一个没有扩展名的score文件
if(!file1.exists()){
// I/O异常是检查异常,需要捕获
try {
file1.createNewFile(); // 实测发现,如果一个文件已经存在了,还去调用createNewFile方法,其并不会损伤原文件,即这个创建文件的操作没有执行
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
三:绝对路径和相对路径
●绝对路径:"c:\\imooc\\io\\score.txt",从盘符(这儿是c盘)开始的;
●相对路径:不从盘符开始,是一个相对的位置;从当前路径开始的路径,当前路径大概率是当前Java文件所在的路径;
相对路径三个例子:
(1)Java文件和要操作的文件处于同一目录:不涉及目录的切换,直接文件名即可;

public class FileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("thread.txt");
System.out.println(f.exists());
}
}
(2)Java文件在待处理文件的上级目录中时;

public class FileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("thread\\thread.txt");
System.out.println(f.exists());
}
}
(3)Java文件和待处理文件处在不同的文件夹时;涉及文件夹的上跳和下转;

其中的“..”代表上跳一级目录;
public class FileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("..\\thread\\thread.txt");
System.out.println(f.exists());
}
}
IDE中(这儿是eclipse为例)中当前路径是工程所在目录的根目录:
工程根目录:

直接创建创建文件:
public class FileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f1 = new File("thread.txt");
try {
f1.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
发现,thread.txt文件的创建位置是工程根目录:

……………………………………………………
获取绝对路径和相对路径的示例:这个例子很简单,稍微一看就行

public class FileDemo {
public static void main(String[] args) {
File f = new File("thread\\thread.txt");
try {
f.createNewFile();
// 判断是否是绝对路径
System.out.println(f.isAbsolute());
// 获取相对路径
System.out.println(f.getPath());
// 获取绝对路径
System.out.println(f.getAbsolutePath());
// 获取文件名
System.out.println(f.getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出结果:
false
thread\thread.txt
E:\java_tools\InputAndOutput\thread\thread.txt
thread.txt
本文介绍了Java中File类的基本概念及常见方法,包括如何创建文件、目录,以及如何判断文件是否可读、可写等属性。同时,通过示例代码展示了不同构造方法的应用,以及如何处理绝对路径与相对路径。
778

被折叠的 条评论
为什么被折叠?



