java - 如何将控制台输出存储到文本文件中,每次运行它都应该创建一个新的文本文件
问题描述
任何人都可以建议/帮助如何将此代码输出存储在文本文件中,它应该在每次运行中创建一个新的文本文件并存储在指定的路径中。感谢您的帮助和支持:
import java.io.*;
import java.sql.*;
public class RetrieveFile {
public static void main(String args[]) throws Exception {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("123.23.32.12:8080/orcl", "test", "****");
PreparedStatement ps = con.prepareStatement("select * from MSG where MID='1234'");
ResultSet rs = ps.executeQuery();
try {
printResultColumns(rs);
} catch (SQLException e) {
System.err.println(e.getMessage());
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void printResultColumns(ResultSet resultSet) throws SQLException, FileNotFoundException {
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
while (resultSet.next()) {
// you get a single result row in here, not the entire ResultSet
for (int i = 1; i <= columnCount; i++) {
switch (rsmd.getColumnType(i)) {
case Types.VARCHAR:
case Types.LONGVARCHAR:
case Types.CHAR:
System.out.println(resultSet.getString(i));
break;
case Types.DOUBLE:
System.out.println(resultSet.getDouble(i));
break;
case Types.INTEGER:
System.out.println(resultSet.getInt(i));
break;
case Types.DATE:
System.out.println(resultSet.getDate(i).toString());
break;
case Types.TIMESTAMP:
System.out.println(resultSet.getTimestamp(i).toString());
break;
case Types.BOOLEAN:
System.out.println(resultSet.getBoolean(i));
break;
case Types.DECIMAL:
case Types.NUMERIC:
System.out.println(resultSet.getBigDecimal(i));
break;
default:
//System.out.println(rsmd.getColumnClassName(i)
//System.out.println(rsmd.getColumnType(i));
String data = String.valueOf(i);
FileOutputStream fos = new FileOutputStream("C:\\Ppp\\pp.txt");
fos.write(data.getBytes());
fos.close();
}
}
}
}
}
控制台输出:- null 1961108001406E00 389 OUR NOW USD 0 0 FR1 FRHBFR222954760001 USD 0 null 0
提前致谢。根据评论更新
解决方案
只需直接写入文件而不是在控制台上打印使用FileOutputStream而不是System.out.println
如果您不确定要打印的数据类型是字符串还是非字符串,请使用方法String.valueOf(arg)将任何数据类型转换为字符串
如果文件已经存在,这也会覆盖该文件。
// 'arg' can be of any datatype it can be int, boolean, float, double etc..
String data = String.valueOf(arg);
String str = "hello";
FileOutputStream fos = new FileOutputStream("log.txt");
fos.write(str.getBytes());
fos.close();
或者
在使用命令行运行 Java 类文件时键入此内容。纯娱乐
java -cp . RetrieveFils > hello.file
希望这能解决问题。
推荐阅读
- python - 是否可以在 Kivy 中使用多个 ScreenManager 小部件?
- javascript - 如何避免 RegExp 中的灾难性回溯?
- java - 如何在 JAVA 中使用 HTTP Patch 将增量行修补到文件?
- autodesk-forge - 模型导数教程文件丢失
- javascript - 阻止在输入类型号中输入负值的角度方式(在复制粘贴和增加、减少时)
- c# - 从 EventHandler void 返回一个字符串值
- java - Thymeleaf 页面未重定向到另一个页面
- three.js - Three.js片段着色器颜色过渡
- python - odoo框架中的ORM
- firebase - 如何在firebase firestore中存储关键字