Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter创建空文件_Java_File_Printwriter - Fatal编程技术网

Java PrintWriter创建空文件

Java PrintWriter创建空文件,java,file,printwriter,Java,File,Printwriter,我有以下问题,我想读一个文件,并将每个字母在字母表中向下移动3个位置。caesar密码工作正常,我可以打印它,但每当我试图用PrintWriter将其传递到新文件时,该文件仍然为空 import java.io.IOException; import java.io.File; import java.io.PrintWriter; import java.util.Scanner; public static char[] encrypt (int offset, char [] charA

我有以下问题,我想读一个文件,并将每个字母在字母表中向下移动3个位置。caesar密码工作正常,我可以打印它,但每当我试图用PrintWriter将其传递到新文件时,该文件仍然为空

import java.io.IOException;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public static char[] encrypt (int offset, char [] charArray) {
        char [] cryptArray = new char [charArray.length];

        for (int i = 0; i < charArray.length; i++) {
            int crypt = (charArray[i] + offset);
            cryptArray[i] = (char) (crypt);
        }
        return cryptArray;
    }

public static void main(String[] args) {
        String text = "";
        StringBuilder convert = new StringBuilder();

        try {
            File file = new File ("C:\\PATH\\file.txt");
            Scanner input = new Scanner (file);

            while (input.hasNextLine()) {
                text = input.nextLine();
                convert = new StringBuilder (text);

                char [] arr = text.toCharArray();
                char [] newArr = encrypt(3, arr);

                for (int i = 0; i < newArr.length; i++) {
                    convert.append(newArr[i]).toString();
                }
            }
            input.close();

        } catch (IOException e) {
            e.printStackTrace(); 
        }
        try {
            // write file
            File outFile = new File ("C:\\PATH\\newfile.txt");
            PrintWriter printer = new PrintWriter (outFile);

            printer.print(convert);
            printer.close();

        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}
import java.io.IOException;
导入java.io.File;
导入java.io.PrintWriter;
导入java.util.Scanner;
公共静态字符[]加密(整数偏移量,字符[]字符集){
char[]cryptary=新字符[charArray.length];
for(int i=0;i
删除
转换=新的StringBuilder(文本)在循环中。它正在覆盖上一个循环中的数据

这对您没有多大帮助,但它在我的PC上工作。如果代码对您来说运行良好,那么它可能与eclipse有关吗?您的打印
能否在写入文件之前进行转换?使用
System.out.print(convert)
我通过eclipse在ubuntu上启动了它。我觉得奇怪,你没有犯任何错误。你尝试过不同的路径吗?只有我把它放在循环中才会打印。是的,我也尝试过不同的路径,我现在的猜测是每个字符都没有正确地附加到字符串中(请参阅for循环)。这会导致无限循环。请尝试使用上面粘贴的代码并删除该行,而不是使用当前版本的代码(我们不知道引入了哪些更改),只删除我提到的行。不要删除其上方的行
text=input.nextLine()@paun它不会导致无限循环。你改变了一些别的东西。只有当输入无限长或您没有使用它时,才能获得无限循环。谢谢各位,我现在修复了它,在附加到Stringbuilder时,我还必须删除.toString(),否则循环对我来说是无限的。