Java 语言新手,
以下是我的代码。但是,整个字符串不会写入文件。仅第一个标记会写入文件。有什么解释吗?
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FichierTexteWrite {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println("Entrez le nom d'un fichier :");
Scanner in = new Scanner(System.in);
String filename = in.next();
FileWriter fwrite = new FileWriter(filename);
System.out.println("Entrez une phrase a memoriser");
fwrite.write(in.next());
System.out.println("Writing on file complete ");
fwrite.close();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我也尝试过 nextLine()
方法,但这似乎没有帮助。它强行写入一个空白字符并终止程序。
---编辑---
我也尝试过:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FichierTexteWrite {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println("Entrez le nom d'un fichier :");
Scanner in = new Scanner(System.in);
String filename = in.next();
FileWriter fwrite = new FileWriter(filename);
System.out.println("Entrez une phrase a memoriser");
fwrite.write(in.nextLine());
System.out.println("Writing on file complete ");
fwrite.close();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果您不相信请编译并运行该程序。这不起作用。它不允许我输入字符串并直接进入下一条指令,该指令关闭流并成功输出文件写入。
最佳答案
您应该使用in.nextLine()
来获取整行。
fwrite.write(in.nextLine());
两次使用 nextLine() :
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FichierTexteWrite {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println("Entrez le nom d'un fichier :");
Scanner in = new Scanner(System.in);
String filename = in.nextLine(); // *** note change
FileWriter fwrite = new FileWriter(filename);
System.out.println("Entrez une phrase a memoriser");
fwrite.write(in.nextLine());
System.out.println("Writing on file complete ");
fwrite.close();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
否则,您的 nextLine() 调用将读取第一行的行尾标记,即您获取文件名的行,而您不希望这样。
关于java - 扫描仪仅读取字符串的第一个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513647/