主要是利用java中的输入输出流实现了文件读出和写入的操作,只需要传入文件路径,即可读出文件内容,同时也可以直接向文件中写入数据内容。java文件读写工具类相关代码如下:
package com.tank.javatest;
import java.io.*;
//文件读写测试
public class FileReadAndWriteTest {
// 向文件中写入数据
private static FileWriter fileWriter = null;
private static BufferedWriter bufferedWriter = null;
// 从文件中读取数据
private static FileReader fileReader = null;
private static BufferedReader bufferedReader = null;
// 写数据
private static FileInputStream fis = null;
// 读数据
private static FileOutputStream fos = null;
private static double sumL = 0;
public static void main(String args) {
// TODO Auto-generated method stub
System.out.println("二进制方式读写数据测试开始………………………………");
// 开始写数据
WriteToFile();
// 开始读数据
ReadFromFile();
System.out.println("二进制方式读写数据测试结束………………………………");
// 普通方式读写数据测试
System.out.println("普通方式读写数据测试开始………………………………");
// 开始写数据
// 磁盘拷贝文件测试
try {
File file = new File("c:\\a.sql");
FileInputStream fileInputStream = new FileInputStream(file);
WriteToFileTwo(fileInputStream, file.length());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 开始读数据
ReadFromFileTwo();
System.out.println("普通方式读写数据测试结束………………………………");
}
// 二进制方式 写数据
public static void WriteToFile() {
try {
// 创建文件对象
fileWriter = new FileWriter("d://reaAndWrite.log");
bufferedWriter = new BufferedWriter(fileWriter);
// 直接存取String类型数据
String con = "WWW.XIUXIUBA";
bufferedWriter.write(con + "\r\n");
System.out.println(con);
/*
* FileWrite的Write(int)方法 无法写入纯int文件的
* 因为这里的int实际上是char字符,当你的int数据在unicode码表里找不到对应的char值时就会出现乱码的。
* 你可以提供一个toString方法转成字符串 想写入真正的int数据
*
* File file = new File("b.txt"); FileWriter fw = new
* FileWriter(file); fw.write((Integer.toString(87)));
*/
// 保存当前或者的敌人坦克的坐标
// 我自己创建一个数组, 然后把数据写进去
for (int i = 0; i < 10; i++) {
con = i + "";
bufferedWriter.write(con + "\r\n");
}
// 如果在这里直接写入int数据
for (int i = 10; i < 20; i++) {
bufferedWriter.write(i); // error
bufferedWriter.write("\r\n");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
// 后开启的先关闭
try {
// 关闭文件流
bufferedWriter.close();
fileWriter.close();
System.out.println("reaAndWrite.log have been saved to disc:d://reaAndWrite.log");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 二进制方式读数据
public static void ReadFromFile() {
try {
// 创建文件对象
fileReader = new FileReader("d://reaAndWrite.log");
bufferedReader = new BufferedReader(fileReader);
// 读一行数据
String str = bufferedReader.readLine();
while ((str = bufferedReader.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
// 后开启的先关闭
try {
// 关闭文件流
bufferedWriter.close();
fileWriter.close();
System.out.println("TankGame.log have been saved to disc:d://Demo11_1//Game.cfg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 普通方式写数据(保存数据)
public static void WriteToFileTwo(FileInputStream fis, long len) {
try {
// 1.把文件加载到内存
// fis = new FileInputStream("d://Demo11_1//test.zip");
fos = new FileOutputStream("d://reaAndWrite.sql");
//System.out.println("文件长度为: "+len);
// 2.读文件(缓存)
byte buf = new byte;
int n = 0;// 实际读取字节数
// 循环读取数据 把数据读到缓存区域
try {
while ((n = fis.read(buf)) != -1) {
//System.out.println("Copy file …… …… ……");
// 把缓冲区的数据输出到指定文件(从buf缓存区中写数据到 输出流文件中去)
System.out.println(fis.read(buf)); //1024
fos.write(buf);
//System.out.println("Copy file …… …… ……"+n+"%");
sumL += n;
System.out.println(n+" "+sumL+" "+len);
System.out.println("已传输:" + ((sumL / len) * 100)*1.94 + "%");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 关闭 打开的文件流
fis.close();
fos.close();
System.out.println("Copy file finished!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("文件拷贝完成!!!");
}
}
// 普通方式读数据
public static void ReadFromFileTwo() {
try {
int len = 0;
byte buf = new byte;
fis = new FileInputStream("d://reaAndWrite.log");
try {
while ((len = fis.read(buf)) != -1) {
System.out.println(new String(buf, 0, len));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上就是java中文件读写工具类的封装,小编只是对此工具类进行了简单的封装,如果读者想实现更复杂的封装,请自行进行二次封装!
评论
填写昵称与邮箱即可评论,无需登录。