java中的IO处理和使用,API详细介绍(一)
来源:互联网 发布:java poi 跨行 编辑:程序博客网 时间:2024/06/06 01:54
写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真。代码是写出来的,不是看出来的。
最后欢迎大家提出意见和建议。
【案例一】:创建一个新文件:
import java.io.*;class hello{ public static void main(String[] args) { File f=new File("D:\\hello.txt"); try{ f.createNewFile(); }catch (Exception e) { e.printStackTrace(); } }}
【运行结果】:
程序运行之后,在d盘下会有一个名字为hello.txt的文件。【案例2】:File类的两个常量:
import java.io.*;class hello{ public static void main(String[] args) { System.out.println(File.separator); System.out.println(File.pathSeparator); }}
【运行结果】:
\
;
此处多说几句:有些同学可能认为,我直接在windows下使用\进行分割不行吗?当然是可以的。但是在linux下就不是\了。所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧,其实也多写不了几行。呵呵、
现在我们使用File类中的常量改写上面的代码:
import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); try{ f.createNewFile(); }catch (Exception e) { e.printStackTrace(); } }}
你看,没有多写多少吧,呵呵。所以建议使用File类中的常量。
删除一个文件:
/** * 删除一个文件 * */import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); if(f.exists()){ f.delete(); }else{ System.out.println("文件不存在"); } }}
创建一个文件夹
/** * 创建一个文件夹 * */import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator+"hello"; File f=new File(fileName); f.mkdir(); }}
【运行结果】:
D盘下多了一个hello文件夹列出文件夹下的全部文件(包括隐藏文件):
/** * 使用list列出指定目录的全部文件 * */import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); String[] str=f.list(); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } }
判断指定路径是否为目录:
/** * 使用isDirectory判断一个指定的路径是否为目录 * */import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); if(f.isDirectory()){ System.out.println("YES"); }else{ System.out.println("NO"); } }}
搜索指定目录的全部内容
/** * 列出指定目录的全部内容 * */import java.io.*;class hello{ public static void main(String[] args) { String fileName="D:"+File.separator; File f=new File(fileName); print(f); } public static void print(File f){ if(f!=null){ if(f.isDirectory()){ File[] fileArray=f.listFiles(); if(fileArray!=null){ for (int i = 0; i < fileArray.length; i++) { //递归调用 print(fileArray[i]); } } } else{ System.out.println(f); } } }}
使用RandomAccessFile写入文件
/** * 使用RandomAccessFile写入文件 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); RandomAccessFile demo=new RandomAccessFile(f,"rw"); demo.writeBytes("asdsad"); demo.writeInt(12); demo.writeBoolean(true); demo.writeChar('A'); demo.writeFloat(1.21f); demo.writeDouble(12.123); demo.close(); }}
如果你此时打开hello。txt查看的话,会发现那是乱码。
* 字节流
向文件中写入字符串
/** * 字节流 * 向文件中写入字符串 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f); String str="你好"; byte[] b=str.getBytes(); out.write(b); out.close(); }}
查看hello.txt会看到“你好”
当然也可以一个字节一个字节的写。/** * 字节流 * 向文件中一个字节一个字节的写入字符串 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f); String str="你好"; byte[] b=str.getBytes(); for (int i = 0; i < b.length; i++) { out.write(b[i]); } out.close(); }}
结果还是“”你好”向文件中追加内容:
/** * 字节流 * 向文件中追加新内容: * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f,true); String str="Rollen"; //String str="\r\nRollen"; 可以换行 byte[] b=str.getBytes(); for (int i = 0; i < b.length; i++) { out.write(b[i]); } out.close(); }}
【运行结果】:
你好Rollen
【读取文件内容】
/** * 字节流 * 读文件内容 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; in.read(b); in.close(); System.out.println(new String(b)); }}
【运行结果】
你好Rollen
Rollen_
但是这个例子读取出来会有大量的空格,我们可以利用in.read(b);的返回值来设计程序。如下:/** * 字节流 * 读文件内容 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; int len=in.read(b); in.close(); System.out.println("读入长度为:"+len); System.out.println(new String(b,0,len)); }}
【运行结果】:
读入长度为:18
你好Rollen
Rollen
读者观察上面的例子可以看出,我们预先申请了一个指定大小的空间,但是有时候这个空间可能太小,有时候可能太大,我们需要准确的大小,这样节省空间,那么我们可以这样干:
/** * 字节流 * 读文件内容,节省空间 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[(int)f.length()]; in.read(b); System.out.println("文件长度为:"+f.length()); in.close(); System.out.println(new String(b)); }}
文件长度为:18
你好Rollen
Rollen
将上面的例子改为一个一个读:
/** * 字节流 * 读文件内容,节省空间 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[(int)f.length()]; for (int i = 0; i < b.length; i++) { b[i]=(byte)in.read(); } in.close(); System.out.println(new String(b)); }}
输出的结果和上面的一样。
细心的读者可能会发现,上面的几个例子都是在知道文件的内容多大,然后才展开的,有时候我们不知道文件有多大,这种情况下,我们需要判断是否独到文件的末尾。
/** * 字节流 *读文件 * */import java.io.*;class hello{ public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; int count =0; int temp=0; while((temp=in.read())!=(-1)){ b[count++]=(byte)temp; } in.close(); System.out.println(new String(b)); }}
【运行结果】
你好Rollen
Rollen_
提醒一下,当独到文件末尾的时候会返回-1.正常情况下是不会返回-1的阅读全文
1 0
- java中的IO处理和使用,API详细介绍(一)
- java中的IO处理和使用,API详细介绍(二)
- Java IO详细介绍
- 详细介绍Java语言中的IO系统(1)
- java中的io(一)
- java IO介绍(一)
- Java中的泛型使用详细介绍
- Java中的泛型使用详细介绍
- Java中的IO介绍
- java中的IO处理
- c++进阶---IO类的详细介绍(一)
- Java IO(一):IO和File
- RecyclerView详细介绍----基础使用(一)
- 超详细java关键字介绍(一)
- 【转载】Java NIO(非阻塞IO) API介绍
- Java NIO(非阻塞IO) API介绍 .
- java io ( 一 ) io整体介绍
- Java中的IO整理完整版(一)
- 基于TI C6000 SYS/BIOS的 创建工程实例
- ios的警告不针对react native A warning from Apple [resolved, not about React Native]
- java面向对象
- 隐蔽通信载体种类
- Android线程—Timer类(五)
- java中的IO处理和使用,API详细介绍(一)
- 如何利用容器降低云成本?
- Java中Resources和Autowired的区别
- VC使用GSOAP调用C#WCF服务
- PHP socket
- HDP 2.5集成Hue
- 卷积神经网络CNN理论到实践(6)
- Javascript循环语句
- 学习使用EasyUI之easyloader加载