我编写了一个代码,用于将文件中的所有小写字母更改为大写

时间:2017-07-20 03:26:44

标签: java

我已经使用FileInputStream,FileOutputStream,DataInputStream和DataoutputStream类来编写代码,如下所示:

import java.io.*;
class Demo
{
    public static void main(String args[]) throws IOException
    {

        File f1=new File("A.txt");
        File f2=new File("Temp.txt");
        if(!f1.exists())
        {
            System.out.print(" file doesn't exist.");
            System.exit(0);
        }
        if(!f2.exists())
        {
            if(!f2.createNewFile())
            {
                System.exit(0);
            }
        }

        FileInputStream fis=new FileInputStream(f1);
        FileOutputStream fos=new FileOutputStream(f2);
        DataInputStream dis=new DataInputStream(fis);
        DataOutputStream dos=new DataOutputStream(fos);
        char ch;
        try
        {
            while(true)
            {
                ch=dis.readChar();
                if(ch>=97 && ch<=122)
                {
                    ch=(char)(ch-32);
                }
                dos.writeChar(ch);
            }
        }
        catch(Exception e1)
        {
            fos.flush();
            fis=new FileInputStream(f2);
            fos=new FileOutputStream(f1);
            dis=new DataInputStream(fis);
            dos=new DataOutputStream(fos);
            try
            {
                while(true)
                {
                    ch=dis.readChar();
                    dos.writeChar(ch);
                }
            }
            catch(Exception e2)
            {
                fos.flush();

            }
            finally
            {
                fis.close();
                fos.close();
            }
        }   
    }
}

但它没有将小写字母转换为大写字母。谁能告诉我这段代码中有什么问题?

2 个答案:

答案 0 :(得分:0)

您可以使用BufferedReader和BufferedWriter类来读取完整的行,转换为大写并写入整行。

如果出现异常,我只是打印堆栈跟踪以演示缓冲读写器的使用情况,您可以在f2中编写相同的内容或根据您的要求做任何事情。

import java.io.*;

class Demo {
    public static void main(String args[]) throws IOException {

        File f1 = new File("A.txt");
        File f2 = new File("Temp.txt");

        if (!f1.exists()) {
            System.out.print(" file doesn't exist.");
            System.exit(0);
        }

        if (!f2.exists()) {
            if (!f2.createNewFile()) {
                System.exit(0);
            }
        }

        BufferedReader bufferedReader = new BufferedReader(new FileReader(f1));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(f2));
        String line;

        try {
            while ((line = bufferedReader.readLine()) != null) {
                // here you can have counters for no. of lines and no. of 
                // characters for debugging and statistics purpose
                System.out.println(line);
                bufferedWriter.write(line.toUpperCase());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            bufferedReader.close();
            bufferedWriter.close();
        }
    }
}

答案 1 :(得分:0)

import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;

public class ConvertLowerToUpper {
    public static void main(String[] args) throws IOException {
        try (PrintWriter output = new PrintWriter("Temp.txt")) {
            Files.readAllLines(Paths.get("A.txt")).stream()
                    .map(String::toUpperCase)
                    .forEach(output::println);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

此代码演示了使用Java 8 Streams执行此操作的简短方法 - 只需读取所有行,将它们映射到大写等效项并将它们打印到PrintWriter。添加额外的错误处理以应对丢失的文件等,您已完成