这里实现两个方法
1.逐行读取txt文件,并以"," 逗号位分隔符 ,把读到的内容转为map或者实体类
2.把内容 写入txt文件
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.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TxtUtils {
Logger logger = LoggerFactory.getLogger(TxtUtils.class);
/**
* 逐行读取TXT并处理,转为Map或者其它Object
*/
@Test
public void readTxtToObject() {
Map<String, String> map = new HashMap<String, String>();
try {
String path = "C:\\Test\\test.txt";
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)), "UTF-8"));
String lineTxt = null;
// 逐行读取
while ((lineTxt = br.readLine()) != null) {
// 每行数据以逗号分隔
String[] names = lineTxt.split(",");
// 处理数据, 可以转成entity, 在这儿转换成map
map.put(names[0], names[1]);
}
br.close();
} catch (Exception e) {
logger.error("Error Message :", e);
}
logger.info("map.size()=" + map.size());
}
/**
* 逐行读取TXT文件并打印到控制台
*/
@Test
public void readTxt() {
try {
String path = "C:\\Test\\test.txt";
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)), "UTF-8"));
String lineTxt = null;
int count = 0;
// 逐行读取
while ((lineTxt = br.readLine()) != null) {
// 输出内容到控制台
logger.info(lineTxt);
count++;
}
br.close();
logger.info("count=" + count);
} catch (Exception e) {
logger.error("Error Message :", e);
}
}
/**
* 方法1写入txt
*
* @param filePath
* @param message
* @throws IOException
*/
public void writetoTxt1(String folder, String filename, String message) throws IOException {
File files = new File(folder);
files.mkdirs();
File file = new File(folder + File.separator + filename);
file.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(message);
out.flush();
}
/**
* 方法2写入txt
*
* @param foler
* @param file
* @param messageList
* @throws FileNotFoundException
*/
public void writeToTxt(String folder, String file, List<String> messageList) throws FileNotFoundException {
File files = new File(folder);
files.mkdirs();
FileOutputStream fos = new FileOutputStream(folder + File.separator + file);
// 逐行写入
PrintWriter pw = new PrintWriter(fos);
for (String message : messageList) {
pw.println(message);
}
pw.close();
}
/**
* 测试方法2写入txt
*/
@Test
public void writeToTxt() {
String folder = "C:\\Test0";
String filename = "000.txt";
String message = "this is message \n";
for (int i = 0; i < 3; i++) {
message += "abc \n";
}
try {
writetoTxt1(folder, filename, message);
} catch (IOException e) {
logger.error("Error Message :", e);
}
}
/**
* 测试方法2写入txt
*/
@Test
public void testWriteToTxt() {
String folder = "C:\\Test";
String file = "test.txt";
List<String> messageList = new ArrayList<>();
messageList.add("ok,0");
messageList.add("no,1");
messageList.add("pass,2");
messageList.add("okay,3");
try {
writeToTxt(folder, file, messageList);
} catch (FileNotFoundException e) {
logger.error("Error Message :", e);
}
}
}
3437




被折叠的 条评论
为什么被折叠?



