简单密码和 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();
}
}
还要确保指定输出路径。
这段代码应该从源文件中读取一个字符;转换为 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();
}
}
还要确保指定输出路径。