首先判断如果一个文件不存在那么创建文件,并写1000行数据,
如果文件存在,那么打开文件接着原来的1000行后面接着写。给100分。
private static void writerFile(List list, String fileName) {
// String name = fileName.substring(0, fileName.length() - 5);
// String createfileName = path + "/" + name + "." +fileSuffix;
try {
File tmpFile = new File(fileName);
FileWriter fw = new FileWriter(tmpFile); if (list != null && list.size() > 0) {
for (int i = 0 ; i < list.size() ; i ++) {
String txt = (String)list.get(i);
System.out.println(txt);
String str[] = txt.split("\\|"); fw.write(txt);
fw.write("\n");
}
}
fw.close();
}
如果文件存在,那么打开文件接着原来的1000行后面接着写。给100分。
private static void writerFile(List list, String fileName) {
// String name = fileName.substring(0, fileName.length() - 5);
// String createfileName = path + "/" + name + "." +fileSuffix;
try {
File tmpFile = new File(fileName);
FileWriter fw = new FileWriter(tmpFile); if (list != null && list.size() > 0) {
for (int i = 0 ; i < list.size() ; i ++) {
String txt = (String)list.get(i);
System.out.println(txt);
String str[] = txt.split("\\|"); fw.write(txt);
fw.write("\n");
}
}
fw.close();
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;public class connectFile { /**
*
* 功能描述:创建TXT文件并进行读、写、修改操作
*
* @author <a href="mailto:[email protected]">KenZhang</a>
* @version 1.0
* Creation date: 2007-12-18 - 下午06:48:45
*/
public static BufferedReader bufread;
//指定文件路径和名称
private static String path = "D:/suncity.txt";
private static File filename = new File(path);
private static String readStr ="";
/** *//**
* 创建文本文件.
* @throws IOException
*
*/
public static void creatTxtFile() throws IOException{
if (!filename.exists()) {
filename.createNewFile();
System.err.println(filename + "已创建!");
}
}
/** *//**
* 读取文本文件.
*
*/
public static String readTxtFile(){
String read;
FileReader fileread;
try {
fileread = new FileReader(filename);
bufread = new BufferedReader(fileread);
try {
while ((read = bufread.readLine()) != null) {
readStr = readStr + read+ "\r\n";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("文件内容是:"+ "\r\n" + readStr);
return readStr;
}
/** *//**
* 写文件.
*
*/
public static void writeTxtFile(String newStr) throws IOException{
//先读取原有文件内容,然后进行写入操作
String filein = newStr + "\r\n" + readStr + "\r\n";
RandomAccessFile mm = null;
try {
mm = new RandomAccessFile(filename, "rw");
mm.writeBytes(filein);
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} finally {
if (mm != null) {
try {
mm.close();
} catch (IOException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
}
}
}
}
/** *//**
* 将文件中指定内容的第一行替换为其它内容.
*
* @param oldStr
* 查找内容
* @param replaceStr
* 替换内容
*/
public static void replaceTxtByStr(String oldStr,String replaceStr) {
String temp = "";
try {
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer(); // 保存该行前面的内容
for (int j = 1; (temp = br.readLine()) != null
&& !temp.equals(oldStr); j++) {
buf = buf.append(temp);
buf = buf.append(System.getProperty("line.separator"));
} // 将内容插入
buf = buf.append(replaceStr); // 保存该行后面的内容
while ((temp = br.readLine()) != null) {
buf = buf.append(System.getProperty("line.separator"));
buf = buf.append(temp);
} br.close();
FileOutputStream fos = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/** *//**
* main方法测试
* @param s
* @throws IOException
*/
public static void main(String[] s) throws IOException {
connectFile ReadWriteFile = new connectFile();
ReadWriteFile.creatTxtFile();
ReadWriteFile.readTxtFile();
ReadWriteFile.writeTxtFile("20080808:12:13");
// ReadWriteFile.replaceTxtByStr("ken", "zhang");
}
}
这样,如果文件已经存在,就在文件末尾写入内容
现在有很多数据文件,文件都很大3-4G左右一个,我需要把里面的数据读出来然后分解,
ABC|DEF|GHI|11231|fsdfjs
都是以|分隔一行一行的。我需要吧ABC部分找到新的对应数据,
替换后生成一个新的文件。因为文件实在太大了。数据量太大了。不能一直读完加载。我的思路是先读1000行然后生成文件写1000行,
下次从1001行开始再读1000行,然后打开文件从1001行继续写。一直循环到文件结束。
这个问题很容易解决。每次读一行,然后处理后,写入另一个文件。 public void testWriteFile(String dataFilename, String outDataFilename) throws Exception {
//dataFile 原数据文件
File dataFile = new File(dataFilename);
//finalFile 处理后的文件
File finalFile = new File(outDataFilename); BufferedReader reader = null;
BufferedWriter writer = null; try {
reader = new BufferedReader(new FileReader(dataFile));
writer = new BufferedWriter(new FileWriter(finalFile));
String line = null;
while ((line = reader.readLine()) != null) {
//对读出的每行数据进行处理
//用processLine(String line) 实现
String newLineData = processLine(line);
//然后写入处理后的文件
writer.append(newLineData);
writer.newLine();
}
writer.flush();
}
finally {
if (reader != null) {
reader.close();
}
}
}