java io

先把how2j的io教程过一遍 how2j的io教程

1.文件对象

  • 文件和文件夹都用File

    1.1 创建文件对象&文件常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
File f = new File("d:/LOLFolder/LOL.exe");
System.out.println("当前文件是:" +f);
//文件是否存在
System.out.println("判断是否存在:"+f.exists());

//是否是文件夹
System.out.println("判断是否是文件夹:"+f.isDirectory());

//是否是文件(非文件夹)
System.out.println("判断是否是文件:"+f.isFile());

//文件长度
System.out.println("获取文件的长度:"+f.length());

//文件最后修改时间
long time = f.lastModified();
Date d = new Date(time);
System.out.println("获取文件的最后修改时间:"+d);
//设置文件修改时间为1970.1.1 08:00:00
f.setLastModified(0);

//文件重命名
File f2 =new File("d:/LOLFolder/DOTA.exe");
f.renameTo(f2);
System.out.println("把LOL.exe改名成了DOTA.exe");

System.out.println("注意: 需要在D:\\LOLFolder确实存在一个LOL.exe,\r\n才可以看到对应的文件长度、修改时间等信息");
//--------------------------------------------------------
File f = new File("d:/LOLFolder/skin/garen.ski");

// 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
f.list();

// 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
File[]fs= f.listFiles();

// 以字符串形式返回获取所在文件夹
f.getParent();

// 以文件形式返回获取所在文件夹
f.getParentFile();
// 创建文件夹,如果父文件夹skin不存在,创建就无效
f.mkdir();

// 创建文件夹,如果父文件夹skin不存在,就会创建父文件夹
f.mkdirs();

// 创建一个空文件,如果父文件夹skin不存在,就会抛出异常
f.createNewFile();
// 所以创建一个空文件之前,通常都会创建父目录
f.getParentFile().mkdirs();

// 列出所有的盘符c: d: e: 等等
f.listRoots();

// 刪除文件
f.delete();

// JVM结束的时候,刪除文件,常用于临时文件的删除
f.deleteOnExit();

1.2 遍历文件夹

2.流就是一系列数据

  • inputStream outputStream
  • FileInputStream文件输入流 FileOutputStream文件输出流
  • 没有byteInputStream ….
  • DataInputStream 数据输入流 DataOutputStream 数据输出流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//准备文件lol.txt其中的内容是AB,对应的ASCII分别是65 66
File f =new File("d:/lol.txt");
//创建基于文件的输入流
FileInputStream fis =new FileInputStream(f);
//创建字节数组,其长度就是文件的长度
byte[] all =new byte[(int) f.length()];
//以字节流的形式读取文件所有内容
fis.read(all);
for (byte b : all) {
//打印出来是65 66
System.out.println(b);
}

//每次使用完流,都应该进行关闭
fis.close();
```


## 3.字符流
- Reader字符输入流
- Writer字符输出流
- 专门用于字符的形式读取和写入数据

```Java
// 准备文件lol.txt其中的内容是AB
File f = new File("d:/lol.txt");
// 创建基于文件的Reader
try (FileReader fr = new FileReader(f)) {
// 创建字符数组,其长度就是文件的长度
char[] all = new char[(int) f.length()];
// 以字符流的形式读取文件所有内容
fr.read(all);
for (char b : all) {
// 打印出来是A B
System.out.println(b);
}

// 准备文件lol2.txt
File f = new File("d:/lol2.txt");
// 创建基于文件的Writer
try (FileWriter fr = new FileWriter(f)) {
// 以字符流的形式把数据写入到文件中
String data="abcdefg1234567890";
char[] cs = data.toCharArray();
fr.write(cs);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

4.中文问题 见how2j

5.缓存字符输入流 BufferedReader

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
File f = new File("d:/lol.txt");
// 创建文件字符流
// 缓存流必须建立在一个存在的流的基础上
try (
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
)
{
while (true) {
// 一次读一行
String line = br.readLine();
if (null == line)
break;
System.out.println(line);
}

6.

再学习入职培训的io(规定使用公司提供的工具)

io常用类 BufferedWriter BufferedReader InputStream OutputStream

  • System.getProperty(“java.io.tmpdir”) java运行产生的临时文件目录
  • File.separator 字符“/”
  • 再加文件名

    InputStream in = Test.class
                  .getResourceAsStream("/com/fangjun/esensoft2/util/grade1.txt");
    OutputStream out=new FileOutputStream(
                  new File(System.getProperty("java.io.tmpdir")+File.separator+"111.txt"));
    
          BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(out));
                      bw.write("+----------------------------------------------);
    
          BufferedReader br = new BufferedReader(new InputStreamReader(
                                in, "UTF-8"));    
    
                    try {
                                  String line = br.readLine();
                                  while (line != null) {
                                      Grade pGrade = line2Grade(line);
                                      list.add(pGrade);
                                      line = br.readLine();
                                  }
                              } finally {
                                  br.close();
                              }
    

http://127.0.0.1:8080/test/welcome.do?cmd=