简单密码和 I/O

Simple cipher and I/O

这段代码应该从源文件中读取一个字符;转换为 ASCII int 值;加1;转换回字符;写入目标文件。

我的目标文件中没有显示任何内容。

现在,我不担心获得大于 255 的 ASCII 值或效率。

import java.io.*;

public class ReadAFile {

    public static void main(String[] args) {

        try {
            File myFile = new File("source.txt");

            FileReader fileReader = new FileReader(myFile);

            BufferedReader reader = new BufferedReader(fileReader);

            int character;

            int shift = 1;

            while ((character = reader.read()) != -1) {

                character = (int) reader.read() + shift;

                WriteAFile(Character.toString((char) character));


            }

            reader.close();

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

    }

    public static void WriteAFile(String line) {

        try {
            FileWriter writer = new FileWriter("destination.txt");

            writer.write(line);

            writer.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }

}

您正在为每个角色覆盖文件。这既低效又不能给你想要的东西。在程序运行期间保持 FileWriter 打开,并在 finally 块中关闭它。

如果您必须写入每个字符,请使用append标志告诉写入者不要覆盖文件。

只是将 @Deepak 所说的代码形式:

 public static void main(String[] args) 
 {
     try 
     {
        File myFile = new File("c:\temp\source.txt"));
        File outputFile = new File("c:\temp\output.txt");
        FileWriter writer = new FileWriter(outputFile);
        FileReader fileReader = new FileReader(myFile);
        BufferedReader reader = new BufferedReader(fileReader);

        try
        {
            int character;
            int shift = 1;

            while ((character = reader.read()) != -1) 
            {
                character = (int) reader.read() + shift;
                writer.write(Character.toString((char) character));
            }
        }
        finally
        {
            writer.close();
            reader.close();
        }
    } 
    catch (Exception ex) 
    {
        ex.printStackTrace();
    }
}

还要确保指定输出路径。