java文件写入时为何总写不进去

今天在写代码时,使用FileWriter写入文件,之后再读取出来,可是总写不进去,导致在服务器端无法读出,因为存的是用户名和密码,并使用","隔开,所以需要每写一条用户信息之后换行,但是总是失败,使用write(username+","+password+"\r\n")之后就可以写入后换行。

以前在使用FileOutputStream写入时,有时也会写不进去,多方查找后,发现是未调用flush()这个函数,调用它可以强制将缓冲区内的内容写入流中,这样在写的文件内容比较少的时候就可以成功写入了。


据我所知,windows和linux/unix平台中应该没有通用的换行符的。针对常用的系统,可以使用如下的转义符实现换行:
windows下的文本文件换行符:\r\n
linux/unix下的文本文件换行符:\r
Mac下的文本文件换行符:\n

n ==  new line那么就是新的一行,例如

代码aa \nbb输出结果会是这样

aa

bb

而\r是让光标回到行首

Java 中,可通过以下两种方法将 List 里的数据入 txt 文件: #### 方法一 此方法运用`BufferedWriter`和`FileWriter`把集合数据入 txt 文件。示例代码如下: ```java package com.example; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class TestFile { public static void main(String[] args) { List lineRow = new ArrayList(); lineRow.add("AAAAAAA"); lineRow.add("BBBBBBB"); lineRow.add("CCCCCCCCC"); BufferedWriter bw; try { bw = new BufferedWriter(new FileWriter("C:/test.txt")); for (int j = 0; j < lineRow.size(); j++) { bw.write(lineRow.get(j).toString()); bw.newLine(); bw.flush(); } bw.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上述代码里,先创建一个`List`对象并添加数据,接着创建`BufferedWriter`对象,再遍历`List`,把每个元素文件,最后关闭`BufferedWriter`。 #### 方法二 该方法借助`BufferedWriter`、`OutputStreamWriter`和`FileOutputStream`将 list 数据入 txt 文件,还能指定文件编码。示例代码如下: ```java package com.example.demo.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; public class ListDateWriteToTxt { public static void main(String[] args) throws Exception { List<String> list = new ArrayList<String>(); list.add("床前明月光,"); list.add("疑是地上霜。"); list.add("举头望明月,"); list.add("低头思故乡。"); String path = "D:\\test\\静夜思.txt"; writeToTxt(list, path); } public static void writeToTxt(List<String> list, String path) throws Exception{ //1. 创建文件 File file = new File(path); if(!file.isFile()){ file.createNewFile(); } //2. 输出 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GB2312")); for (String content:list) { bw.write(content); bw.newLine(); } bw.close(); System.out.println("入完成!"); } } ``` 在这段代码中,先创建一个`List`对象并添加数据,然后定义文件路径,调用`writeToTxt`方法。在`writeToTxt`方法里,先检查文件是否存在,若存在则创建,接着创建`BufferedWriter`对象,遍历`List`并将每个元素文件,最后关闭`BufferedWriter`并输出入完成的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值