求高手点拨一个“方法中的异常”处理方法...
高手,您好:我弄了一个“添加一个字符串到txt文件”的功能类..
类文件如下:
package d_port_package;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class WriteTxt{
public static void write(String filePath){
try {
FileWriter output = new FileWriter(filePath);
BufferedWriter bf= new BufferedWriter(output);
for(String l:ReadTxt.logData ){
bf.write(l+ "\r\n");
}
bf.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void writeDatatoFiletail(ArrayList<String> Data,String filePath){
FileWriter output = null;
try {
output = new FileWriter(filePath,true);
int len = Data.size();
for(int i = 0;i<len;i++){
BufferedWriter bf= new BufferedWriter(output);
bf.write(Data.get(i));
bf.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void writeDatatoFiletail(String Data,String filePath){
FileWriter output = null;
try {
output = new FileWriter(filePath,true);
BufferedWriter bf= new BufferedWriter(output);
bf.write(Data);
bf.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
经过我的测试类文件:
package d_port_package;
public class Test {
static String MyUID = "cjco";
static String MyID = "CJCO";
static String BeiJingMemUIDPath = "D:\\MyDoc\\Dport\\BeiJing\\SysMemIndexbak.txt";
public Test(){
}
public static void main(String[] args){
ReadTxt.logData.add(MyUID);
WriteTxt.writeDatatoFiletail(ReadTxt.logData.get(0), BeiJingMemUIDPath);
ReadTxt.logData.add(MyID);
WriteTxt.writeDatatoFiletail(ReadTxt.logData.get(1), BeiJingMemUIDPath);
}
}
测试文件的内容,在进行代码的运行之前为:
运行玩我的代码后,得到的本txt测试文件中的内容为:
请问高手:
我弄的这个“writeTxt类”中的write()方法,他的第18行代码中的“\r\n”就是我想要起到“换行”效果的代码..
“writeTxt类”中的“writeDatatoFiletail()”方法,他的每一句数据向文件中的书写,是借助了“BufferedWriter”这个自己的“write()”方法“相当于System.out.println()”的具有“自动换行效果”的写出语句进行的“向txt测试文件书写”的代码实现的...
但是这个时候,我得到的结果,却是图二中的“两个新的写入数据”,
“都没有得到换行效果”的结果...
请求高手点拨:
怎样修改,能够得到弟我预期的两个方法的写出,全部能够将新数据换行,的效果...?
一百分奉上!!
一位日日夜夜向着理想奔跑的筑梦者
2013年9月22日早晨6点50分 Java IO Java 调试 Java写入文件 Java SE --------------------编程问答-------------------- BufferedWriter使用newLine换行。 --------------------编程问答-------------------- writeDatatoFiletail方法中并没有添加"\r\n"当然不能换行了。 --------------------编程问答--------------------
感觉是这个原因。 --------------------编程问答-------------------- 那请问三位哥哥:
我的write()方法中写了“\r\n”,他不能换行的原因,是什么缘故造成的呢...? --------------------编程问答-------------------- 这边不清楚你ReadTxt干了什么,但是试了下分隔符是可以用的,不过建议使用系统自带的行分隔符方式:
public class Test
{
static String MyUID = "cjco";
static String MyID = "CJCO";
static String BeiJingMemUIDPath = "D:\\work\\SysMemIndexbak.txt";
public Test()
{
}
public static void main(String[] args)
{
List<String> myList = new ArrayList<String>();
myList.add(MyUID);
getStrsList(myList);
myList.add(MyID);
System.out.println("myList :"+myList);
try
{
FileWriter output = new FileWriter(BeiJingMemUIDPath);
BufferedWriter bf = new BufferedWriter(output);
for (String l : myList)
{
bf.write(l + System.getProperty("line.separator"));//建议使用换行的系统分隔符
}
bf.flush();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//将文件内容先读取出来放到list中
private static void getStrsList(List<String> myList)
{
FileReader reader = null;
BufferedReader br = null;
try
{
reader = new FileReader(BeiJingMemUIDPath);
br = new BufferedReader(reader);
String temp;
while(null != (temp = br.readLine()))
{
myList.add(temp);
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
if(null != br)
{
try
{
br.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(null != reader)
{
try
{
reader.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
运行结果,那个txt内容原来为199的,变成:
cjco
199
CJCO
--------------------编程问答-------------------- 想精确控制还是用字节流比较方便
不会出现这些让人觉得不可理解的问题 --------------------编程问答-------------------- 你的write()方法是没问题的,可以换行的,只不过构造FileWriter时要记得加true
另外你的测试方法中最终页没有调用write方法啊
你在writeDatatoFiletail方法中调用的都是BufferedWriter的write方法,是没有换行处理的
补充:Java , Java SE