Java文件读写操作代码实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*
*参数in对象通过InputStream in = System.in;获得。//读取键盘上的数据。
*
*或者InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出
* FileInputStream为InputStream的子类。
*
*二、InputStreamReader类
*
* InputStreamReader将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。
*
*构wk.baidu.com方法:
*
* InputStreamReader isr = new InputStreamReader(InputStream
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
while ((line = br.readLine()) != null) {
buffer.append(line).append("\n");
log(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
* @param filePath
* @param text
* @return the FileWriter object, null if throws Exception
*/
public static FileWriter writeText(String filePath, String text) {
} catch (IOException e) {
e.printStackTrace();
}
}
}
return writer;
}
/**
*向文件写入字符串。可以时较大字符串.
*注意\n不一定在各种计算机上都能产生换行的效果:
* <p>可以用返回的BufferedWriter对象执行一下函数实现换行:
writeText(aaaPath, text, false);
readResourceFile(aaaPath);//读取文件资源
}
private static void testBufferReader() {
try {
readFileNoBuffer(PATH, 2048);//不使用缓冲区
readFileByBuffer(PATH);//使用缓冲区,适用于,读取完整文件
} catch (IOException e) {
e.printStackTrace();
}
}
public static void setDebugMode(boolean debugMode) {
FileReadWriteUtil.debugMode = debugMode;
}
/**
*没有缓冲区,只能使用read()方法,得指定要读取的字符长度
BufferedReader br = null;
StringBuffer buffer = null;
try {
br = new BufferedReader(new FileReader(filePath));
String line = null;
buffer = new StringBuffer();
try {
writer = new FileWriter(filePath, append);
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(writer != null) {
try {
writer.close();
InputStream in = new FileInputStream(path);//读取文件的数据。
//将字节流向字符流的转换。要启用从字节到字符的有效转换,
//可以提前从底层流读取更多的字节.
InputStreamReader isr = new InputStreamReader(in);//读取
/**
* @param args
*/
public static void main(String[] args) {
// readSystemInputText();//读取键盘输入文字信息
// testBufferReader();
String aaaaPath = "/home/hulk/aaaa.txt";
* @return the FileWriter object, null if throws Exception
*/
public static FileWriter writeText(String filePath, String text, boolean append) {
FileWriter writer = null;
*
*主要方法:int read();//读取单个字符。int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。
*
*三、FileWriter(少量文字)和BufferedWriter(大量文字)实现简单文件写操作
* @author hulk
*/
public class FileReadWriteUtil {
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer;
}
public static StringBuffer readtextByChar(String filePath) {
* in);//构造一个默认编码集的InputStreamReader类
*
* InputStreamReader isr = new InputStreamReader(InputStream in,String
* charsetName);//构造一个指定编码集的InputStreamReader类。
String aaaPath = "/home/hulk/aaa.txt";
String text = readResourceFile(aaaaPath).toString();//读取文件资源
String appendtext = "\n\nAAAAAAAAAAAAaaaaaaaaaaaaaaaa\nBBBBBBBBBBBBBBBBbbbbbbbbbbbbb";
StringBuffer text = null;
FileReader reader = null;
try {
reader = new FileReader(filePath);
int ch = 0;
text = new StringBuffer();
while ((ch = reader.read()) != -1) {
text.append((char)ch);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null) {
/**
*一、BufferedReader类public class BufferedReader extends Reader
*从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。
*通常,Reader所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用BufferedReader包装所有其read()
*
* @throws IOException
*/
public static String readFileNoBuffer(String path, int readChars)
throws IOException {
//读取字节流
// InputStream in = System.in;//读取键盘的输入。
*
* @throws IOException
*/
public static StringBuffer readFileByBuffer(String path) throws IOException {
//读取字节流
InputStream in = new FileInputStream(path);//读取文件上的数据。
char[] cha = new char[readChars];
int len = isr.read(cha);
String text = new String(cha, 0, len);
log(text);
isr.close();
return text;
}
/**
*使用缓冲区可以使用缓冲区对象的read()和readLine()方法。
*操作可能开销很高的Reader(如FileReader和InputStreamReader)。
* BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象
* ,来创建一个BufferedReader对象,之所以这样做是因为FileReader没有提供读取文本行的功能.
String line;
while ((line = bufr.readLine()) != null) {
buffer.append(line).append("\n");
log(line);
}
isr.close();
return buffer;
}
public static StringBuffer readText(String filePath) {
InputStreamReader isr = new InputStreamReader(in);//将字节流向字符流的转换
BufferedReader bufr = new BufferedReader(isr);//创建字符流缓冲区
StringBuffer buffer = new StringBuffer();
return writeText(filePath, text, false);
}
/**
*使用FileWriter类写文本文件
* @param filePath
* @param text
* @param append true:如果存在filePath.txt文件,则直接在后面追加字符串; false:直接删除原文件
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return text;
}
/**
*使用FileWriter类写文本文件,仅限制少量文字
* Note: //使用这个构造函数时,如果存在filePath.txt文件,则先把这个文件给删除掉,然后创建新的filePath.txt
// "D:\\demo.txt"
private static String PATH = "/home/hulk/devtools/adt-bundle-linux-x86_64-20140702/workspace/JavaTest/readme.txt";// or
private static boolean debugMode = true;
Java文件读写操作代码实现
package test;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
*参数in对象通过InputStream in = System.in;获得。//读取键盘上的数据。
*
*或者InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出
* FileInputStream为InputStream的子类。
*
*二、InputStreamReader类
*
* InputStreamReader将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。
*
*构wk.baidu.com方法:
*
* InputStreamReader isr = new InputStreamReader(InputStream
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
while ((line = br.readLine()) != null) {
buffer.append(line).append("\n");
log(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
* @param filePath
* @param text
* @return the FileWriter object, null if throws Exception
*/
public static FileWriter writeText(String filePath, String text) {
} catch (IOException e) {
e.printStackTrace();
}
}
}
return writer;
}
/**
*向文件写入字符串。可以时较大字符串.
*注意\n不一定在各种计算机上都能产生换行的效果:
* <p>可以用返回的BufferedWriter对象执行一下函数实现换行:
writeText(aaaPath, text, false);
readResourceFile(aaaPath);//读取文件资源
}
private static void testBufferReader() {
try {
readFileNoBuffer(PATH, 2048);//不使用缓冲区
readFileByBuffer(PATH);//使用缓冲区,适用于,读取完整文件
} catch (IOException e) {
e.printStackTrace();
}
}
public static void setDebugMode(boolean debugMode) {
FileReadWriteUtil.debugMode = debugMode;
}
/**
*没有缓冲区,只能使用read()方法,得指定要读取的字符长度
BufferedReader br = null;
StringBuffer buffer = null;
try {
br = new BufferedReader(new FileReader(filePath));
String line = null;
buffer = new StringBuffer();
try {
writer = new FileWriter(filePath, append);
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(writer != null) {
try {
writer.close();
InputStream in = new FileInputStream(path);//读取文件的数据。
//将字节流向字符流的转换。要启用从字节到字符的有效转换,
//可以提前从底层流读取更多的字节.
InputStreamReader isr = new InputStreamReader(in);//读取
/**
* @param args
*/
public static void main(String[] args) {
// readSystemInputText();//读取键盘输入文字信息
// testBufferReader();
String aaaaPath = "/home/hulk/aaaa.txt";
* @return the FileWriter object, null if throws Exception
*/
public static FileWriter writeText(String filePath, String text, boolean append) {
FileWriter writer = null;
*
*主要方法:int read();//读取单个字符。int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。
*
*三、FileWriter(少量文字)和BufferedWriter(大量文字)实现简单文件写操作
* @author hulk
*/
public class FileReadWriteUtil {
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer;
}
public static StringBuffer readtextByChar(String filePath) {
* in);//构造一个默认编码集的InputStreamReader类
*
* InputStreamReader isr = new InputStreamReader(InputStream in,String
* charsetName);//构造一个指定编码集的InputStreamReader类。
String aaaPath = "/home/hulk/aaa.txt";
String text = readResourceFile(aaaaPath).toString();//读取文件资源
String appendtext = "\n\nAAAAAAAAAAAAaaaaaaaaaaaaaaaa\nBBBBBBBBBBBBBBBBbbbbbbbbbbbbb";
StringBuffer text = null;
FileReader reader = null;
try {
reader = new FileReader(filePath);
int ch = 0;
text = new StringBuffer();
while ((ch = reader.read()) != -1) {
text.append((char)ch);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null) {
/**
*一、BufferedReader类public class BufferedReader extends Reader
*从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。
*通常,Reader所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用BufferedReader包装所有其read()
*
* @throws IOException
*/
public static String readFileNoBuffer(String path, int readChars)
throws IOException {
//读取字节流
// InputStream in = System.in;//读取键盘的输入。
*
* @throws IOException
*/
public static StringBuffer readFileByBuffer(String path) throws IOException {
//读取字节流
InputStream in = new FileInputStream(path);//读取文件上的数据。
char[] cha = new char[readChars];
int len = isr.read(cha);
String text = new String(cha, 0, len);
log(text);
isr.close();
return text;
}
/**
*使用缓冲区可以使用缓冲区对象的read()和readLine()方法。
*操作可能开销很高的Reader(如FileReader和InputStreamReader)。
* BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象
* ,来创建一个BufferedReader对象,之所以这样做是因为FileReader没有提供读取文本行的功能.
String line;
while ((line = bufr.readLine()) != null) {
buffer.append(line).append("\n");
log(line);
}
isr.close();
return buffer;
}
public static StringBuffer readText(String filePath) {
InputStreamReader isr = new InputStreamReader(in);//将字节流向字符流的转换
BufferedReader bufr = new BufferedReader(isr);//创建字符流缓冲区
StringBuffer buffer = new StringBuffer();
return writeText(filePath, text, false);
}
/**
*使用FileWriter类写文本文件
* @param filePath
* @param text
* @param append true:如果存在filePath.txt文件,则直接在后面追加字符串; false:直接删除原文件
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return text;
}
/**
*使用FileWriter类写文本文件,仅限制少量文字
* Note: //使用这个构造函数时,如果存在filePath.txt文件,则先把这个文件给删除掉,然后创建新的filePath.txt
// "D:\\demo.txt"
private static String PATH = "/home/hulk/devtools/adt-bundle-linux-x86_64-20140702/workspace/JavaTest/readme.txt";// or
private static boolean debugMode = true;
Java文件读写操作代码实现
package test;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;