第一:File类(主要获取文件名,判断文件是否存在,创建或者删除文件)

举个例子,代码如下:

import java.io.File;

public class Main{

    public static void main (String[] args) {

        File file=new File("F:\\test");
GetFileName(file); } public static void GetFileName(File file){ if (file.exists()) { File[] files=file.listFiles(); if (files!=null&&files.length>0) {
for (File s:files) {
if (s.isDirectory()) {
System.out.println(s);
GetFileName(s);
}
else
System.out.println(s);
}
} }
else { file.mkdir(); }
} }

这个是File类的一个遍历的作用,结果是:

当然我的文件夹是这样的

以上代码里面我们需要知道的一些知识点:

//创建File类的对象,输入路径
File file=new File("F:\\test");
//判断文件是否存在,可以是文件夹也可以是文档
file.exists();
//判断文件是否是文件夹
file.isDirectory();
//获取该文件夹目录下的所有文件,必须是文件夹才可以执行此操作
File[] files=file.listFiles();
//创建文件
file.mkdir(); //创建文件夹
file.createNewFile();  //创建文件
//删除文件 file.delete();

这些是一些最基础的,当然还有一些其他的方法,就不深入的介绍

  第二:RandomAccessFile类(主要是读文件内容,写文件内容)

  第一步,我们已经学习了如何的去创建删除文件,如何获取文件名称。这一步来操作,如何在文件内写点东西,读点东西。

Java里面写东西,本身就是byte byte的结合,而且会有一个指针会记录写的数据的位置。而且写完东西之后,必须要关闭,否则会有异常问题。

我们看代码:

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile; public class Main{ public static void main (String[] args) throws IOException { //创建File类的对象,输入路径
File file=new File("F:\\test\\蜀云泉.txt"); if (file.exists()) { //打开我们的文件,选择模式。rw是读写模式,r是只读模式。这个会有IO异常,我们已经在方法哪里抛出异常
RandomAccessFile raf=new RandomAccessFile(file,"rw");
//写东西,可能会出现乱码,所以最好指定编码格式。
raf.writeUTF("许嵩是最佳歌手");
System.out.println(raf.length());
//读东西,先把指针放到开头
raf.seek(0);
String content = raf.readUTF();
System.out.println(content); raf.seek(raf.length());
raf.writeUTF("追加内容"); raf.close(); } }
}

结果:

是UTF编码是一个 汉字,3个字节。之所以是23是因为自动写进去了一个符号?,看看结果

可能是哪里自己加的吧。。。。应该是writeUTF这个方法自己加的,我用gbk编码就没有这种情况。

其实write方法有很多种可能的,什么先写进byte数组,在write,还有write字节什么的。我就不过多的探讨了。指针那块也很好理解,追加内容的也是。最后close一下就完事了,一定要close

  第三: IO流

IO流其实分为字符流和字节流,比较重要的是 InputStream 和 OutputStream 。他们各自都有三个方法,最常用:

InputStream流
in.read();
in.read(byte[] b);
in.read(byte[] b,int off,int len);
OutputStream流
out.write(int b);
out.write(byte[] b);
out.write(byte[] b,int off,int len);

Java里面封装了两个专门来操作文件的类,分别是 FileInputStream和FileOutputStream 他们俩继承了上面的俩。我们之间通过一个复制文件的功能的代码,来看看:

import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        copy(new File("F:\\test\\蜀云泉.txt"),new File("F:\\test\\副本.txt"));

    }

    //写一个复制文件的方法,把FileName1的数据复制到FileName2里面去
public static void copy(File FileName1, File FileName2) throws IOException {
if (!FileName1.isFile()) {
throw new IllegalArgumentException("FileName1不是文件");
}
if (!FileName2.isFile()) {
FileName2.createNewFile();
}
FileInputStream in = new FileInputStream(FileName1);
FileOutputStream out = new FileOutputStream(FileName2);
//写一个字符数组去读
byte[] result = new byte[1024];
int b;
while ((b = in.read(result, 0, result.length)) != -1) {
out.write(result, 0, b);
out.flush();
}
in.close();
out.close(); }
}

是不是用到上面的三个方法了,就是这么简单。学会read和write方法就行了

java.io.File类:表示了文件和目录. Window系统:表示路径使用\.但是在Java中,一根\表示转义符,我们就不得不写成:\\. String path = "D:\\JavasePros\\day11"; 路径分割使用;. Unix 系统:表示路径使用/. String path = "D:/JavasePros/day11"; 路径分割使用:.

Java IO笔记的更多相关文章

  1. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  2. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  3. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  4. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  5. Java IO学习笔记一

    Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...

  6. Java开发笔记(九十一)IO流处理简单的数据压缩

    前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...

  7. Java学习笔记31(IO:Properties类)

    Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...

  8. Java学习笔记--字符串和文件IO

    1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1. ...

  9. Java IO学习笔记一:为什么带Buffer的比不带Buffer的快

    作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...

随机推荐

  1. python 使用read_csv读取 CSV 文件时报错

    读取csv文件时报错 df = pd.read_csv('c:/Users/NUC/Desktop/成绩.csv' ) Traceback (most recent call last):  File ...

  2. David Silver强化学习Lecture2:马尔可夫决策过程

    课件:Lecture 2: Markov Decision Processes 视频:David Silver深度强化学习第2课 - 简介 (中文字幕) 马尔可夫过程 马尔可夫决策过程简介 马尔可夫决 ...

  3. 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法

    方法一 通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使 ...

  4. Laravel之路由 Route::get/post/any、路由参数、过滤器、命名、子域名、前缀、与模型绑定、抛出 404 错误、控制器

    基本路由 应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成. 基本 GET 路由 代码如下: Route::get('/', fu ...

  5. mysql的主主复制详解

    Mysql双主部署 解释: 所谓双主备份,其实也就是互做主从复制,每台master既是master,又是另一台服务器的slave.这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中. 要求 ...

  6. jquery Ajax get()/post()

    get()/post()是通過http get/post向服務器請求數據的. http get vs post: get:向指定資源獲取數據 post項指定資源提交數據. get是向遠程服務器的獲取數 ...

  7. js實現

    js的代碼寫在<script></script>中: <script></script>可以放在body中或者head中,如果放在body中,一般放在b ...

  8. hashCode和equal

    转自:https://www.cnblogs.com/dolphin0520/p/3681042.html hashCode方法在Object类中: public native int hashCod ...

  9. centOS7 修改DNS

    #显示当前网络连接 #nmcli connection show NAME UUID TYPE DEVICE eno1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802 ...

  10. linux运维、架构之路-linux文件属性

    1.查看文件属性 ls -lhi 文件属性详细说明 1. 第一列: inode索引节点编号 2. 第二列:文件类型及权限 3. 第三列:硬链接数 4. 第四列:文件或目录所属的用户,即文件的所有者 5 ...