首页 > 解决方案 > 如何将控制台输出存储到文本文件中,每次运行它都应该创建一个新的文本文件

问题描述

任何人都可以建议/帮助如何将此代码输出存储在文本文件中,它应该在每次运行中创建一个新的文本文件并存储在指定的路径中。感谢您的帮助和支持:

   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

提前致谢。根据评论更新

标签: javajdbc

解决方案


只需直接写入文件而不是在控制台上打印使用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

希望这能解决问题。


推荐阅读