java输入输出流 有一个文本文件,其中为竖线符分隔的数据:如 aa|bb 现在想写一个程序将其写入一个文件test.txt,文件格式为insert into table values('aa','bb'),我建了一个输入流读文件,但不知道如何将修改好的串写到输出流,大家给出出主意。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的方法: public static void exportToFile(List<Data> dataList, String filePath) throws IOException { FileWriter out = new FileWriter(filePath); for(Data data:dataList){ out.write(data.toString()+"\n"); } out.flush(); out.close(); }Data如下:public class Data{ private String data1; private String data2; public Data(String data1,String data2){ this.data1=data1; this.data2=data2; } public String getData1() { return data1; } public void setData1(String data1) { this.data1 = data1; } public String getData2() { return data2; } public void setData2(String data2) { this.data2 = data2; } @Override public String toString(){ return "insert into table values('"+data1+"','"+data2+"'),"; }} RandomAccessFile aaa = new RandomAccessFile("文件路径", "rw"); aaa.seek(aaa.length()); String a="insert into table values('aa','bb')"; aaa.write(a.getBytes());这样可以么? FileWriter writer = new FileWriter("test.txt");writer.... 简单写了一个,就不测试了。应该可行的。final String TableName = "table";File srcFile = new File("srcData.txt");File desFile = new File("sql.txt");BufferedReader reader = new BufferedReader(new FileReader(srcFile));BufferedWriter writer = new BufferedWriter(new FileWriter(desFile));String line = null;while((line=reader.readLine())!=null){ String datas [] = line.split("\\|"); writer.write("insert into "); writer.write(TableName); writer.write(" values("); for(int i=0;i<datas.length;i++){ if(i>0)writer.write(","); writer.write("'");writer.write(datas[i]);writer.write("'"); } writer.write(")");writer.newLine(); writer.flush();}reader.close();writer.close(); 4楼的基础上改写了一下,添加了final关闭流,insert语句之间加分号表示结束,stringbuffer比string提高效率。public class d1230 { public static void main(String[] args) throws IOException { final String TableName = "table"; File srcFile = new File("d:/srcData.txt"); File desFile = new File("d:/sql.txt"); StringBuffer sqlstr =new StringBuffer(""); String line=null; BufferedReader reader=null; BufferedWriter writer=null; try { reader = new BufferedReader(new FileReader(srcFile)); writer = new BufferedWriter(new FileWriter(desFile)); while ((line = reader.readLine()) != null) { String datas[] = line.split("\\|"); sqlstr.append("insert into "); sqlstr.append(TableName); sqlstr.append(" values("); for (int i = 0; i < datas.length; i++) { if (i > 0){ sqlstr.append(","); } sqlstr.append("'"); sqlstr.append(datas[i]); sqlstr.append("'"); } sqlstr.append(");"); writer.write(sqlstr.toString()); sqlstr.delete(0, sqlstr.length()); writer.newLine(); writer.flush(); } } catch (Exception e) { e.printStackTrace(); }finally{ reader.close(); writer.close(); } }} 就建一个文件格式的输出流,通过一个类似Stringbuffer的东西做中介,把输入流的东西写进去就行吧!大概楼主的意思是还要做格式上的变换是吧?这样的话,我觉得中间是不是可以用正则表达式来处理一下呢 需要注意一点:BufferedWriter本身就有缓冲区,所以,没必要使用StringBuffer类对象进行字符串的缓冲处理,直接将需要的内容写入BufferedWriter,最后flush一下即可。可以少用一个类,呵呵。 JAVA 根据当前系统日期 对0-50进行排序 有什么好思路请指教??? 新手急求!IO效率 为什么输入-1没停止? java代码格式自动缩进的快捷键是??? 调整JPanel界面大小问题 如何检查一个字符串是否为文件(或是目录)? about Date format in JTable 给位老大,谁知道在c中日期时间是如何存入文件的?用java(从文件读取)如何转换? 诸位神仙给我一个学习“JAVA”的理由? 一道面试题,求解答 高手赐教 java为我们提供的解决方案 java数据库大量添加数据性能问题
FileWriter out = new FileWriter(filePath);
for(Data data:dataList){
out.write(data.toString()+"\n");
}
out.flush();
out.close();
}
Data如下:public class Data{
private String data1;
private String data2; public Data(String data1,String data2){
this.data1=data1;
this.data2=data2;
} public String getData1() {
return data1;
} public void setData1(String data1) {
this.data1 = data1;
} public String getData2() {
return data2;
} public void setData2(String data2) {
this.data2 = data2;
} @Override
public String toString(){
return "insert into table values('"+data1+"','"+data2+"'),";
}
}
aaa.seek(aaa.length());
String a="insert into table values('aa','bb')";
aaa.write(a.getBytes());这样可以么?
writer....
File srcFile = new File("srcData.txt");
File desFile = new File("sql.txt");
BufferedReader reader = new BufferedReader(new FileReader(srcFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(desFile));
String line = null;
while((line=reader.readLine())!=null){
String datas [] = line.split("\\|");
writer.write("insert into ");
writer.write(TableName);
writer.write(" values(");
for(int i=0;i<datas.length;i++){
if(i>0)writer.write(",");
writer.write("'");writer.write(datas[i]);writer.write("'");
}
writer.write(")");writer.newLine();
writer.flush();
}
reader.close();
writer.close();
final String TableName = "table";
File srcFile = new File("d:/srcData.txt");
File desFile = new File("d:/sql.txt");
StringBuffer sqlstr =new StringBuffer("");
String line=null;
BufferedReader reader=null;
BufferedWriter writer=null;
try {
reader = new BufferedReader(new FileReader(srcFile));
writer = new BufferedWriter(new FileWriter(desFile));
while ((line = reader.readLine()) != null) {
String datas[] = line.split("\\|");
sqlstr.append("insert into ");
sqlstr.append(TableName);
sqlstr.append(" values(");
for (int i = 0; i < datas.length; i++) {
if (i > 0){
sqlstr.append(",");
}
sqlstr.append("'");
sqlstr.append(datas[i]);
sqlstr.append("'");
}
sqlstr.append(");");
writer.write(sqlstr.toString());
sqlstr.delete(0, sqlstr.length());
writer.newLine();
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
reader.close();
writer.close();
}
}}
BufferedWriter本身就有缓冲区,所以,没必要使用StringBuffer类对象进行字符串的缓冲处理,
直接将需要的内容写入BufferedWriter,最后flush一下即可。
可以少用一个类,呵呵。