java进行文件读写操作详解

 更新时间:2014年10月29日 11:06:48   投稿:hebedich  
这篇文章主要介绍了java进行文件读写操作详解的相关资料,需要的朋友可以参考下

直接上代码,有详细注释,有图解,相信你懂得!

复制代码 代码如下:

package day14;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Random;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

public class TestFileIO {
static String s = File.separator;

private static void testInput() {
// D盘下有个Welcome.java文件,现在按字节读入:
int a = 0;
// int counter=0;
FileInputStream f11;
// 输入流
try {
f11 = new FileInputStream("D:" + s + "Welcome.java");
while ((a = f11.read()) != -1)
System.out.print((char) a); // 这里是按字节输出,中文字符无法正常输出,因为一个中文字符时两个字节。
System.out
.println("\n\n--------------------------------------------------\n");

FileReader f12 = new FileReader("D:" + s + "Welcome.java");
while ((a = f12.read()) != -1)
System.out.print((char) a);// 这里是按字符输出,中文字符都可以正常输出
System.out
.println("\n\n--------------------------------------------------\n");

f11.close();// 读完之后要关闭文件
f12.close();// 读完之后要关闭文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private static void testOutput() {
// D盘下有个Welcome.java文件,现在按字节读入:
int a = 0;
// 输出流
File f21 = new File("D:" + s + "testFile" + s + "test1.txt");// 定义一个新的文件f21,然后判断在这一目录下是否存在,如果不存在,则创建之。
if (!f21.exists()) {
f21.getParentFile().mkdirs();
try {
f21.createNewFile();
// 将“Welcome.java”的内容复制到f21
FileOutputStream fos = new FileOutputStream(f21);
FileInputStream fis = new FileInputStream("D:" + s
+ "Welcome.java");// 读入“Welcome.java”文件
while ((a = fis.read()) != -1)
fos.write(a);// 将读入的内存写到fos中,现在得到的test1。txt就是复制Welcome。java的

// writer类
FileWriter f22 = new FileWriter("D:" + s + "testFile" + s
+ "test2.txt");
for (int i = 0; i < 65535; i++)
f22.write(i);// 将
// 写入到test2.txt中。由这里也可以看出,上面35-38行判断文件是否存在的语句也可以不要。
// 向文件中写入字符串
FileWriter f23 = new FileWriter("D:" + s + "testFile" + s
+ "test3.txt");
f23.write("Hello, world!");

fos.close();
fis.close();
f22.close();
f23.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

private static void testBufferring() {
// D盘下有个Welcome.java文件,现在按字节读入:
int a = 0, counter = 0;
// 缓冲字符,实现高效写入
// BufferedWriter f31=new BufferedWriter(new
// FileWriter("D"+s+"testFile"+s+"test4.txt"));
BufferedWriter f31;
try {
f31 = new BufferedWriter(new FileWriter("D:" + s + "testFile" + s
+ "test4.txt"));
for (int i = 1; i <= 100; i++) {
f31.write(String.valueOf(new Random().nextInt(100)) + " ");
if (i % 10 == 0)
f31.newLine();
}
f31.flush();// 刷新缓冲
f31.close();

BufferedReader f32 = new BufferedReader(new FileReader("D:" + s
+ "testFile" + s + "test4.txt"));
String s32;
System.out.println("输出文件f32的内容:");
while ((s32 = f32.readLine()) != null)
System.out.println(s32);
f32.close();
System.out
.println("\n--------------------------------------------------\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private static void testZip() {
try {
File f1 = new File("D:/test.zip");
File f2 = new File("D:/testFile/testzip");
ZipFile zf = new ZipFile(f1);
testZipToUnzip(zf, f2);

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

// 将压缩包zipfile解压到file中
public static void testZipToUnzip(ZipFile zipfile, File file) {
ZipEntry zentry = null;
File zipout;
InputStream zis = null;
FileOutputStream fos = null;
Enumeration e = zipfile.entries();// zipfile的目录

while (e.hasMoreElements()) {
zentry = (ZipEntry) e.nextElement();
System.out.println(zentry.getName());// zipfile下有哪些文件?可是为什么不按顺序输出??

// 将解压后的文件放到file文件夹下:
zipout = new File(file + s + zentry.getName());

if (!zentry.isDirectory()) {
try {
zis = zipfile.getInputStream(zentry);
if (!zipout.exists())
zipout.getParentFile().mkdirs();
fos = new FileOutputStream(zipout);
byte[] b = new byte[1024];
int length;
while ((length = zis.read(b)) > 0) {
fos.write(b, 0, length);
}
fos.close();
zis.close();
} catch (ZipException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}

public static void main(String[] args) throws ZipException {
// TODO Auto-generated method stub

testInput();
testOutput();
testBufferring();
testZip();
}
}



 



 

相关文章

  • Comet框架Plushlet使用问题解决方案

    Comet框架Plushlet使用问题解决方案

    这篇文章主要介绍了Comet框架Plushlet使用问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Mybatis动态SQL的示例代码

    Mybatis动态SQL的示例代码

    本文主要介绍了Mybatis动态SQL的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JAVA通过Filter实现允许服务跨域请求的方法

    JAVA通过Filter实现允许服务跨域请求的方法

    这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域即我们常说的浏览器请求的同源策略。这篇文章主要介绍了JAVA通过Filter实现允许服务跨域请求,需要的朋友可以参考下
    2018-11-11
  • Java详细分析LCN框架分布式事务

    Java详细分析LCN框架分布式事务

    这篇文章主要介绍了Java LCN框架分布式事务,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上
    2022-07-07
  • IDEA 单元测试覆盖技巧分享

    IDEA 单元测试覆盖技巧分享

    这篇文章主要介绍了IDEA 单元测试覆盖技巧分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Druid关闭监控页面关闭不了的问题及解决

    Druid关闭监控页面关闭不了的问题及解决

    这篇文章主要介绍了Druid关闭监控页面关闭不了的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java 锁粗化与循环问题

    Java 锁粗化与循环问题

    这篇文章主要介绍了Java 锁粗化与循环的相关知识,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • IntelliJ Plugin 开发之添加第三方jar的示例代码

    IntelliJ Plugin 开发之添加第三方jar的示例代码

    这篇文章主要介绍了IntelliJ Plugin 开发之添加第三方jar的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 热更新 Groovy 实践及踩坑指南(推荐)

    Java 热更新 Groovy 实践及踩坑指南(推荐)

    Apache的Groovy是Java平台上设计的面向对象编程语言,这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用,这篇文章主要介绍了Java 热更新 Groovy 实践及踩坑指南,需要的朋友可以参考下
    2022-09-09
  • Maven工程打包jar的多种方式

    Maven工程打包jar的多种方式

    Maven打包一般可以生成两种包一种是可以直接运行的包,一种是依赖包(只是编译包),这篇文章主要介绍了Maven工程打包jar的多种方式步骤详解,需要的朋友可以参考下
    2023-04-04

最新评论