我编写了一个将arrayList打印成文本文件的方法,但由于某种原因,每次都不会在新行上打印,它会将所有内容打印到一行。下面是我的代码。
private static void writingToFile() {
try {
BufferedWriter writeArrayList = new BufferedWriter (new FileWriter("D:\\text.txt"));
for(StoreCommands s : commandsList){
writeArrayList.write(s + "\n");
}
writeArrayList.close();
} catch (IOException e) {
e.printStackTrace();
}
}
此刻,我必须手动输入路径,我希望用户选择他们想要放置文件的位置,我该怎么做呢?感谢。
答案 0 :(得分:0)
要附加到文件,请使用:
创建new FileWriter("D:\\text.txt", true);
FileWriter public FileWriter(String fileName, boolean append)throws IOException在给定文件名的情况下构造FileWriter对象,其中boolean指示是否 或不附加所写的数据。
参数fileName - String系统相关的文件名。追加 - boolean如果为true,则数据将写入文件末尾 而不是开始。如果指定的文件是,则抛出IOException 未找到或是否发生其他I / O错误。 More here
其他例子:
FileOutputStream fileOutput = new FileOutputStream("myfile.txt", true);
BufferedOutputStream bufferedOutput = new BufferedOutputStream(
fileOutput);
bufferedOutput.write(<your binaries here>);
答案 1 :(得分:0)
尝试这样的事情怎么样
private static void writingToFile() {
try {
PrintWriter out = new PrintWriter (new FileWriter("D:\\text.txt"));
for(StoreCommands s : commandsList){
out.println(s);
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我更喜欢PrintWriter,因为我喜欢println方法。您可以添加系统。在所有陈述和打印之前,而不是写入文件。
编辑,我也假设您正确调用了String。你可能需要像
这样的东西 for(StoreCommands s : commandsList){
out.println(s.toString());
}
最后是有趣的Java8版本
private static void writeToFile(){
try(PrintWriter out = new PrintWriter(new FileWrite("test.txt"))){
list.stream().map(StoreCommands::toString).forEach(s -> out.println(s));
out.close();
} catch (IOException ex){
System.err.out(ex);
}
}
答案 2 :(得分:0)
用于撰写新行BufferedWriter
类的check out the newLine()
method。
对于阅读用户输入,您可以使用基本Scanner
类,如下所示:
Scanner get = new Scanner(System.in);
String path = get.nextLine();
...
答案 3 :(得分:0)
问题#1:
将"\n"
更改为"\r\n"
问题#2 :
按照C.B.
发布的答案,给他/她投票(如果可能的话)......
答案 4 :(得分:0)
要回答关于不必硬编码文件路径的问题,请尝试使用命令行参数,如下所示(在您的类中):
public static void main(String[] args){
...
writingToFile(args[0]);
然后,当您运行java应用程序时,您只需在命令行上指定文件名,如下所示:
java <classname>.java D:/text.txt