Io流
/ 创建一个文件对象 File file = new File("e:/" + fileName + ".txt"); // 文件不存在 if (file.exists()) {// 判断文件是否存在 System.out.println("该文件已经存在!"); } else { // 文件不存在 boolean flag = file.createNewFile(); // 创建文件 if (flag) { System.out.println("创建成功!"); // 显示文件的详情 showFile("e:/" + fileName + ".txt"); } else { System.out.println("创建失败!"); } }
//创建一个目录(dir)
System.out.println("请您输入创建的目录名称: 默认在E:/");
String dir = input.next();
// 创建文件对象
File file = new File("e:/" + dir);
boolean flag = file.mkdirs(); // 可以同时创建多个文件夹
if (flag) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
//同时创建多个文件夹
System.out.println("请您输入创建的目录名称: 默认在E:/");
String dir = input.next();
// 创建文件对象
File file = new File("e:/" + dir);
boolean flag = file.mkdirs(); // 可以同时创建多个文件夹
if (flag) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
showFirstMenu();
}
02.获取文件的大小,路径,文件类型
// 创建文件对象 File file = new File(fileName); System.out.println("文件的名称:" + file.getName()); System.out.println("文件的大小:" + file.length()); System.out.println("文件的路径" + file.getAbsolutePath());
03.删除文件或者目录
// 创建文件对象 File file = new File("e:/" + deleteFileName + ".txt"); if (file.exists()) { // 文件存在就删除 boolean flag = file.delete(); if (flag) { System.out.println("删除成功====!"); } else { System.out.println("删除失败====!"); } } else { System.out.println("您要删除的文件不存在,请重新选择!"); }
04.获取目录下所有的文件列表
/** * 查询目录下所有的文件列表 * @throws IOException */ private static void showFiles() throws IOException { System.out.println("请输入目录的名称:默认E:/"); String dirName = input.next(); // 创建文件对象 File file = new File("e:/" + dirName); File[] files = file.listFiles(); int dirNums = 0; int fileNums = 0; for (File f : files) { if (f.isDirectory()) { // 证明是目录 dirNums++; } if (f.isFile()) { // 证明是文件 fileNums++; } } System.out.println("目录" + dirName + "下面有几个文件夹?" + dirNums); System.out.println("目录" + dirName + "下面有几个文件?" + fileNums); showFirstMenu();
05.重命名文件/目录
/** * 修改文件名称 */ private static void renameFile() { System.out.println("请输入原文件的名称:"); String oldName = input.next(); System.out.println("请输入新文件的名称:"); String newName = input.next(); // 创建文件对象 File oldFile = new File("e:/" + oldName + ".txt"); File newFile = new File("e:/" + newName + ".txt"); if (oldFile.renameTo(newFile)) { System.out.println("重命名成功!"); } else { System.out.println("重命名失败!"); } }
2.IO inputStream outputStream 相对于内存
所有的输入流都有一个read() 读取数据
所有的输出流都有一个write() 写入数据!而且每个输出流对象的构造 方法都有第二个参数===》是否覆盖之前的内容 (第二个参数为boolean类型,默认为false,新内容会覆盖原内容;若为true在原内容后追加新内容)
我们所谓的输入输出流 都是单向的!
01.字节流
基类 InputStream OutputStream
/** * 字节 输入流的操作 * 1 byte = 8 bit * stream.read() * 从流中 读取一个8位的字节,然后返回0-255之间的一个整数! * 如果流读取到了最后,会返回-1 * * 输出流的操作 * OutputStream 本身没有设置缓存区 * 它的子类中有 比如 BufferedOutputStream PrintStream * */ public class InputOutputStreamDemo { public static void main(String[] args) { InputStream is = null; OutputStream os = null; try { // 创建输入流对象 is = new FileInputStream("E:/heihei.txt"); // 创建输出流对象 os = new FileOutputStream("E:/heihei.txt", true); // 写入内容 os.write("654321".getBytes()); os.flush();// 清理缓冲区 没有效果 System.out.println("可读取的字节数:" + is.available()); // 获取文件中的内容 int temp = 0; while ((temp = is.read()) != -1) { // -1代表文件没有内容 System.out.print((char) temp); // 中文乱码 } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 释放资源 try { is.close(); os.close(); } catch (IOException e) { e.printStackTrace(); } } } }
02. 字符流
基类 Reader Writer
缓冲的基类 BudfferedReader BufferedWriter
//Reader Writer
public static void main(String[] args) {
Reader reader = null;
Writer writer = null;
try {
// 创建对应输出流对象
writer = new FileWriter("E:/heihei.txt");
// 写入内容
writer.write("大家辛苦了zhende?");
writer.close();
// 创建对应输入流对象
reader = new FileReader("E:/heihei.txt");
// 创建一个char类型的数组 来保存 输入流中的数据
char[] data = new char[1024];
int temp = 0;
StringBuffer sb = new StringBuffer();
while ((temp = reader.read(data)) != -1) {
sb.append(data);
}
System.out.println(sb.toString()); // 输出数据
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally { // 释放资源
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//BufferedReader BufferedWriter
public static void main(String[] args) { Reader in = null; Writer out = null; BufferedReader br = null; BufferedWriter bw = null; try { // 创建输出流对象 out = new FileWriter("E:/heihei.txt", true); bw = new BufferedWriter(out); bw.write("第7行77777"); bw.newLine();// 文件中换行 bw.flush(); // 清理缓冲区 bw.write("第8行88888"); bw.write("第9行99999"); bw.close(); // 关闭输出流 out.close(); in = new FileReader("E:/heihei.txt"); // 创建缓冲区输入流对象 br = new BufferedReader(in); // 创建字符串保存数据 StringBuffer sb = new StringBuffer(); String line = null; // 逐行读取 while ((line = br.readLine()) != null) { sb.append(line + "\n"); } // 输出内容 System.out.println("文件的内容是:" + sb.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
03. 二进制流 (图片,视频,音频......)
基类 DataInputStream DdataOutputStream
public static void main(String[] args) { InputStream in = null; OutputStream out = null; DataInputStream dis = null; DataOutputStream dos = null; try { // 创建输入流对象 in = new FileInputStream("E:/u1/cat.jpg"); dis = new DataInputStream(in); // 创建输出流对象 out = new FileOutputStream("E:/maomi.jpg"); dos = new DataOutputStream(out); // 创建中间变量 int temp = 0; while ((temp = dis.read()) != -1) { // 输出到新的位置 dos.write(temp); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 释放资源 try { dos.close(); dis.close(); out.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } }