java IO与文件操作
文件创建与删除#
创建目录或文件
-
createNewFile() 需要文件目录已存在
public class IO { public static void main(String args[]) { String dirname = "D:\\java\\temp.txt"; File d = new File(dirname); try { d.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } }
-
创建目录
-
mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
-
mkdirs()方法创建一个文件夹和它的所有父文件夹。
String dirname = "D:\\java\\temp\\123"; File d = new File(dirname); d.mkdirs();
-
删除目录或文件
public class IO {
public static void main(String args[]) {
// 这里修改要删除的目录或文件
File folder = new File("D:\\java\\temp");
deleteFolder(folder);
}
// 删除文件及目录
public static void deleteFolder(File folder) {
File[] files = folder.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
}
}
}
folder.delete();
}
}
文件读写#
1.FileOutputStream
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。
2.InputStreamReader
InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
3.FilterReader
用于读取已过滤的字符流的抽象类。抽象类 FilterReader 自身提供了一些将所有请求传递给所包含的流的默认方法。FilterReader 的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
public class IO {
public static void main(String args[]) throws Exception {
File file = new File("D:\\java\\temp.txt");
// 第二个参数用来决定是否追加内容还是覆盖,默认为覆盖
// 构建FileOutputStream对象,文件不存在会自动新建
FileOutputStream fileOutputStream = new FileOutputStream(file,true);
// 字符流转字节流
OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream);
writer.append("OutputStreamWriter:145\n");
// 字节流处理
BufferedWriter bufferedWriter = new BufferedWriter(writer);
// 此行代码是使用字节流的方式
//bufferedWriter = new BufferedWriter(new FileWriter(file));
bufferedWriter.append("bufferedWriter:133444\n");
//使用PrintWriter类
PrintWriter printWriter = new PrintWriter(file);
printWriter.append("PrintWriter printWriter = new PrintWriter(file);\n");
printWriter.close();
bufferedWriter.close();
writer.close();
fileOutputStream.close();
// 使用节流方式读取
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
// 使用字符流方式读取
//FileInputStream fileInputStream = new FileInputStream(file);
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
String s ;
while ((s = bufferedReader.readLine())!=null){
System.out.println(s);
}
bufferedReader.close();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?