使用InputStreamReader读入,使用OutputStreamWriter写出,将一首诗按行重写?

https://www.processon.com/view/link/5b1a3880e4b00490ac8f5f40

今天浪费好多时间在这个编程题,还没做完,再完美点是将多线程开启后随机选取一个文本文件的诗词进行重写. 或者是多个线程从网络上搜索相关字眼进行摘录重写查找关键字.

虽然不懂什么叫爬虫,但可能这个东东也可能能办到吧?因为看到InputStreamReader的in属性可以使用URL.

package 换行诗;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;

public class Test9 implements Runnable {

    public static void main(String[] args) {
        Runnable r1 = new Test9();
        Thread t1 = new Thread(r1);// t1线程

        Test9 test = new Test9();
//        t1.start();
        InputStream is = null;
        OutputStream os = null;
        OutputStreamWriter osw = null;
        InputStreamReader isr = null;

        try {
            is = new FileInputStream("test1.txt");
            os = new FileOutputStream("test2.txt");
            isr = new InputStreamReader(is, "UTF-8");
            osw = new OutputStreamWriter(os, "UTF-8");

            ArrayList<Integer> one = test.getDataInt(isr);
            ArrayList<Integer> two = test.getList(one);
            final String ANTI_POEM = test.getAntiPoem(two);

            System.out.println(ANTI_POEM);
            osw.write(ANTI_POEM);

        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            {
                try {
                    if (osw != null)
                        osw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                try {
                    if (isr != null)
                        isr.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                try {
                    if(os != null)
                        os.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }

                try {
                    if(is != null) {
                        is.close();
                    }

                }catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }
    }

    /////////////////////////////////////////////////////

    private String getAntiPoem(ArrayList<Integer> two) {
        String poems = "";
        // 换行计数
        int _1310 = 5;
        int _count = 0;
        int strAnd_n = 0;
        for (int e = 0; e < two.size(); e++) {
            poems += String.valueOf((char) ((int) (two.get(e))));
            if (poems.length() == _1310) {
                poems += "\n";// 假设为6
                _count++;
                if (_count == 1) {
                    strAnd_n = poems.length();
                }
                if (_count < 3) {
                    _1310 += strAnd_n;
                }
            }
        }
        return poems;
    }

    ////////////////////////////////////////////////////////////

    public ArrayList<Integer> getDataInt(InputStreamReader isr) {
        ArrayList<Integer> dataInt = new ArrayList<>();
        int data = 0;
        String dataStr = "";
        try {
            while ((data = isr.read()) != -1) {
                dataStr = data + "";
                if (dataStr.length() == 5) {
                    dataInt.add(data);
                }

            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (isr != null)
                    isr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return dataInt;
    }

    ///////////////////////////////////////////////////////////////

    public ArrayList<Integer> getList(ArrayList<Integer> dataInt) {
        int w;
        int index;

        int dataIndex = dataInt.size() - 1;
        ArrayList<Integer> cutes = new ArrayList<>();
        for (w = dataIndex; w >= 4; w--) {
            for (int l = 0; l < 5; l++) {
                index = (w - 4 + l);
                cutes.add(dataInt.get(index));
            }
            w -= 4;
        }
        return cutes;

    }

    InputStream inThread = null;
    OutputStream outThread = null;
    InputStreamReader isrThread = null;
    OutputStreamWriter oswThread = null;

    @Override
    public void run() {
        try {
            inThread = new FileInputStream("hello.txt");
            outThread = new FileOutputStream("hello1.txt");
            isrThread = new InputStreamReader(inThread, "utf-8");
            oswThread = new OutputStreamWriter(outThread, "utf-8");
            final String ANTI_POEM = getAntiPoem(getList(getDataInt(isrThread)));
            oswThread.write(ANTI_POEM);
            System.out.println(ANTI_POEM);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (oswThread != null)
                    oswThread.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                if (isrThread != null)
                    isrThread.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                if (outThread != null)
                    outThread.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                if (inThread != null)
                    inThread.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

}

原文地址:https://www.cnblogs.com/ukzq/p/9158049.html

时间: 2025-01-31 17:04:29

使用InputStreamReader读入,使用OutputStreamWriter写出,将一首诗按行重写?的相关文章

请写出并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数

方法一: <?php if ($argc > 1){ print_r($argv); } ?> php.exe test.php welcome Ricky Feng 方法二: 还有一种这样的,提示用户输入,然后获取输入的参数.有点像C语言 <?php fwrite(STDOUT, "Enter your name: "); $name = trim(fgets(STDIN)); fwrite(STDOUT, "Hello, $name!")

java实现读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字

今天看到一篇文章:[原始链接] 题目是"读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字",是用c语言实现的.由于我目前正在学习java,所以想用java来实现下. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格. import java.io.BufferedReader; import java.io.IOException

做一个具有图片读入,写出,灰度化,黑白化的有图形界面的小软件

我们这一次的树莓基础的作业是做一个做一个具有图片读入,写出,灰度化,黑白化的小软件,我采用的是java,因为java有大量性能非常好的接口可用,譬如在图片这块,ImageIO,BufferedImage都是非常好用的,而我这一次作业也是使用这两个包. 首先我们要解决的是界面,界面可以直接用JFrame来打, 非常简单,我的界面有一个菜单栏和一个图片显示区,菜单栏有三个选项:文件,转换,保存,文件菜单有一个子菜单:打开文件,转换菜单有两个子菜单:变成灰度和变成黑白,保存菜单有三个子菜单:jpg,

读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.★☆ 读入一个整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.★★ 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格.  输入样例:  1234567890987654321123456789  输出样例:  yi san wu #include<stdio.h> #incl

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

我的Java历程_写出这个数

lzJava基础进行中,今天偶然间看到的一个题目: 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.如下代码: import java.util.*;public class Main2{ public static void main(String[] args){ String[] date = {"Ling", "Yi", "Er", "San", "Si", "Wu&q

PAT (Basic Level) Practise 1002. 写出这个数

1002. 写出这个数 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格. 输入样例: 1234567890987654321123456789 输出样

PAT (Basic Level) 1002. 写出这个数 (20)

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格. 输入样例: 1234567890987654321123456789 输出样例: yi san wu 我的代码   #include<iostream> #include<string> using namespace

1002. 写出这个数 (20)

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格. 输入样例: 1234567890987654321123456789 输出样例: yi san wu 1.如何把字符类型里的每一个数字分离出来,有很多种方法 String str=sc.next().trim(); String b=