当前位置: 首页 > 编程笔记 >

java进行文件读写操作详解

倪鹏
2023-03-14
本文向大家介绍java进行文件读写操作详解,包括了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();

}

}



 



 

 类似资料:
  • 主要内容:C++ >>和<<读写文本文件前面章节中,已经给大家介绍了文件流对象如何调用 open() 方法打开文件,并且在读写(又称 I/O )文件操作结束后,应调用 close() 方法关闭先前打开的文件。那么,如何实现对文件内容的读写呢?接下来就对此问题做详细的讲解。 在讲解具体读写文件的方法之前,读者首先要搞清楚的是,对文件的读/写操作又可以细分为 2 类,分别是以文本形式读写文件和以二进制形式读写文件。 1) 我们知道,文件中存

  • 本文向大家介绍Node.js Streams文件读写操作详解,包括了Node.js Streams文件读写操作详解的使用技巧和注意事项,需要的朋友参考一下 Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧。  流是什么 流

  • 本文向大家介绍java对同一个文件进行读写操作方法,包括了java对同一个文件进行读写操作方法的使用技巧和注意事项,需要的朋友参考一下 同一个文件是不可以进行同时的读写的,因为我们写入文件会覆盖原文件的,如果这样,对于同一文件来来说,文件发生覆盖,无法进行下次读取 当然,对于两个不同的文件,可以一边读一边写的操作 题目:一个文本中存储26个无序字母,要求对字母排序后重新写入该文件中 分析:可以在内

  • 本文向大家介绍Java对xls文件进行读写操作示例代码,包括了Java对xls文件进行读写操作示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍的是关于Java对xls文件进行读写操作的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: win7_x64 IDEA Java读写xls文件,使用库jxl.jar 读写xls文件,这里是在知道表格格式的前提

  • 本文向大家介绍Android编程之在SD卡上进行文件读写操作实例详解,包括了Android编程之在SD卡上进行文件读写操作实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之在SD卡上进行文件读写操作的方法。分享给大家供大家参考,具体如下: 很多知识只有真正理解掌握之后才能运用自如,举一反三。对Java中的文件操作和android系统SD卡里面的文件操作,你觉得有区

  • 本文向大家介绍PHP使用XMLWriter读写xml文件操作详解,包括了PHP使用XMLWriter读写xml文件操作详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用XMLWriter读写xml文件操作。分享给大家供大家参考,具体如下: 米扑科技旗下的多个产品,需要脚本自动生成sitemap.xml,于是重新温习一遍PHP XML读写操作。 读写xml的方式,主要围绕XMLW