java读文件,文件中包含不同用户,根据用户的不同将数据读到不同文件!求一个简单的java demo!第一个字段代表用户id:
这玩意,看你如何保存的数据了,根据保存的规则,读取就是了,如果是按对象序列化的文件,那样肯能会比较简单
方式不对,肯定不是根据用户来读数据了
总得要有一个数据的格式吧,都没给格式怎么说
以字符单位 InputStreamReader
输入流读取文件 按行读取,然后根据用户的不同 用输出流不同写入不同的文件就可以了
换一个方式保存试试,肯定三保存方式不对,不然怎么会
json格式按行读取,试一试!
如果只是读这一个文件,可以使用HashMap 主键存id value为list集合,通过io流读取文件时从“,“那里截取id判断是否相等存数据
像这样?
Map bWriters = new HashMap<>();
try(BufferedReader bReader = new BufferedReader(new FileReader("fileName"))) {
String tStr = null;
while ((tStr = bReader.readLine()) != null){
String[] strs = tStr.split(",");
String usrId = strs[0];
BufferedWriter bWriter = bWriters.get(usrId);
if(bWriter == null){
bWriter = new BufferedWriter(new FileWriter("targetFileName"));
bWriters.put(usrId, bWriter);
}
bWriter.write(tStr);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(bWriters!=null){
for(BufferedWriter bw:bWriters.values()){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
根据保存的数据的方式读取
估计是保存方式不对,你可以换一个保存方式试试
可以看下hutool
看下hutool或json格式按行读取
用户是按名字还是类型区分?
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
String[] infos = line.split(",");
RandomAccessFile file = new RandomAccessFile(infos[0], "rw");
file.seek(file.length());
file.write(line.substring(line.indexOf(",") + 1).getBytes());
file.write("\n".getBytes());
file.close();
}
reader.close();
}
}
问题表达不是很清晰的,问题是这样吗:
一文件(文件A)中包含有不同用户的数据,用户数据中就有不同的文件名(B类文件)或者文件Id。你要读取B类文件吗
楼主没有给规则,就随便写了下
package tool.readfile;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
public class ReadAndwrite {
public static void main(String[] args) {
File file = new File("这里填写file的地址");
File outFile = new File("输出file");
try {
BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8"));
String line = "";
//写入文件,不会覆盖之前的,加参数true
Writer writer = new FileWriter(outFile, true);
// 读行操作
while ((line = read.readLine()) != null) {
// 按,分隔
String[] arrString = line.split(",");
for (String string : arrString) {
// 或string.endsWith("判断以什么结尾");或 使用正则匹配,看需要什么自己写
if (string.startsWith("判断以什么开始")) {
//写之前也可以进行一下操作
writer.write(string);
}
}
}
//关闭流
read.close();
writer.close();
//楼猪可以稍加改动就可以使用,不要照着抄嘿嘿
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.按行读取
2.每行按照分隔符分割,取第一个值作为文件名
3.每个文件内容已追加形式写入每行内容