### Java文件读写操作详解 #### 一、获取控制台用户输入信息 在Java中,通过`System.in.read()`方法可以实现从控制台获取用户的输入信息。以下代码展示了如何使用这种方式来读取用户输入的数据: ```java public String getInputMessage() throws IOException { System.out.println("请输入您的命令:"); byte[] buffer = new byte[1024]; int count = System.in.read(buffer); char[] ch = new char[count - 2]; // 最后两位为结束符,删去不要 for (int i = 0; i < count - 2; i++) { ch[i] = (char) buffer[i]; } String str = new String(ch); return str; } ``` 此方法的主要不足在于不支持中文输入。对于中文支持的需求,可以通过使用`InputStreamReader`结合`BufferedReader`来实现: ```java public String getChineseInputMessage() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); System.out.println("请输入您的命令:"); return reader.readLine(); } ``` #### 二、复制文件 复制文件是文件操作中的常见需求之一,以下展示了一种常见的复制文件的方法: ```java public void copyFile(String src, String dest) throws IOException { FileInputStream in = new FileInputStream(src); File file = new File(dest); if (!file.exists()) { file.createNewFile(); } FileOutputStream out = new FileOutputStream(file); int c; byte[] buffer = new byte[1024]; while ((c = in.read(buffer)) != -1) { for (int i = 0; i < c; i++) { out.write(buffer[i]); } } in.close(); out.close(); } ``` 这种方法不仅支持中文处理,还可以复制各种类型的文件,如txt、xml、jpg、doc等。 #### 三、写入文件 写入文件也是Java中常见的操作之一,以下提供了两种方法来实现文件写入: 1. **使用PrintStream写文件** 使用`PrintStream`类可以直接向文件写入字符串,示例如下: ```java public void PrintStreamDemo() { try { FileOutputStream out = new FileOutputStream("D:/test.txt"); PrintStream p = new PrintStream(out); for (int i = 0; i < 10; i++) { p.println("This is " + i + " line"); } } catch (FileNotFoundException e) { e.printStackTrace(); } } ``` 2. **使用StringBuffer写文件** `StringBuffer`结合`FileOutputStream`可以用来写入大量数据到文件中,并且支持指定编码来避免中文乱码问题: ```java public void StringBufferDemo() throws IOException { File file = new File("/root/sms.log"); if (!file.exists()) { file.createNewFile(); } FileOutputStream out = new FileOutputStream(file, true); for (int i = 0; i < 10000; i++) { StringBuffer sb = new StringBuffer(); sb.append("这是第" + i + "行: 前面介绍的各种方法都不管用, 为什么总是遇到奇怪的问题"); out.write(sb.toString().getBytes("utf-8")); } out.close(); } ``` #### 四、文件重命名 在Java中,可以通过调用`File`对象的`renameTo()`方法来实现文件的重命名: ```java public void renameFile(String path, String oldname, String newname) { if (!oldname.equals(newname)) { // 新的文件名和以前文件名不同时,才有必要进行重命名 File oldfile = new File(path + "/" + oldname); File newfile = new File(path + "/" + newname); if (newfile.exists()) { // 若在该目录下已经有一个文件和新文件名相同,则不允许重命名 System.out.println(newname + "已经存在!"); } else { oldfile.renameTo(newfile); } } } ``` #### 五、转移文件目录 转移文件目录是指将文件从一个目录移动到另一个目录中,以下是一种实现方式: ```java public void changeDirectory(String filename, String oldpath, String newpath, boolean cover) { if (!oldpath.equals(newpath)) { File oldfile = new File(oldpath + "/" + filename); File newfile = new File(newpath + "/" + filename); if (newfile.exists()) { if (cover) { newfile.delete(); } else { System.out.println(filename + " 在目标目录已存在!"); return; } } if (!oldfile.renameTo(newfile)) { throw new RuntimeException("移动失败!"); } } } ``` 此方法中,如果目标目录中存在同名文件且`cover`参数为`true`时,则会覆盖目标目录中的同名文件;否则将提示文件已存在并停止移动操作。
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 桌球台球检测6-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- js图片轮播.zip
- 6种创意css按钮样式
- div卡片样式切换特效.zip
- jQuery左侧导航右侧tab页面切换.zip
- 图标文字网格布局div+css样式代码.zip
- 纯css网页背景加载中布局.zip
- 彩色边框创意div层样式.zip
- stm32学习时的代码
- 桌球台球检测9-YOLO(v5至v11)数据集合集.rar
- stm32的两万字笔记
- 单片机+人体红外感应的防盗系统设计(仿真+源码+PCB文件+报告)
- 2023-04-06-项目笔记 - 第三百五十六阶段 - 4.4.2.354全局变量的作用域-354 -2025.12.23
- 400w微型逆变器, 基于stm32g474实现 设计方案,不是成品 带有源代码、原理图(AD)、PCB(AD)
- 森林大火检测28-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- VBA视频教程 0001