Java 覆盖文件
Java Overwrite file
public void saveList(Vector<Vector> table_data){
ArrayList<String> output_list = new ArrayList<String>();
for(int i=0;i<table_data.capacity();i++){
String temp="";
Vector tempVector = (Vector) table_data.elementAt(i);
tempVector.trimToSize();
for(int v=0;v<tempVector.capacity();v++){
temp+=((String)tempVector.elementAt(v))+" ";
}
temp = temp.trim();
System.out.println(temp);
output_list.add(temp);
}
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw = new FileWriter(output_filename,false);
bw= new BufferedWriter(fw);
for(String i : output_list){
bw.write(i);
bw.newLine();
}
}
catch(FileNotFoundException e){}
finally{
if (bw != null) {
try {
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这是我重写文件的代码。每次单击它时,都有一个 JButton 调用此函数。它传递来自 JTable 的向量。该文件应始终被覆盖。但它实际上只会在我第一次点击按钮时覆盖。问题是什么,我该如何解决?
您没有捕捉到 IOException,因此无法编译
try{
fw = new FileWriteroutput_filename,false);
bw= new BufferedWriter(fw);
for(String i : output_list){
bw.write(i);
bw.newLine();
}
}
catch(IOException e){}
在这个示例和测试代码中,我使用扫描仪保存在 "ENTER" 开始时生成的不同数组。按下的这个键与您的 Button 在文件中写入时所做的相同。
public static void main(String[] args) {
String[][] array = new String[3][3]; //My array of test
for(int i = 0; i < 9; ++i){
array[i/3][i%3] = "#" + i;
}
Scanner sc = new Scanner(System.in); //A scanner to way my input
for(String[] tmp : array){
System.out.print("Press ENTER to continue");
sc.nextLine(); //I am read, press "ENTER" to write in file
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw = new FileWriter("test.txt",false);
bw= new BufferedWriter(fw);
for(String s : tmp){
bw.write(s);
bw.newLine();
}
}
catch(IOException e){}
finally{
if (bw != null) {
try {
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
结果是:
第一次,文件创建
#0
#1
#2
第二次,文件被覆盖:
#3
#4
#5
第三次:
#6
#7
#8
然后程序停止。
public void saveList(Vector<Vector> table_data){
ArrayList<String> output_list = new ArrayList<String>();
for(int i=0;i<table_data.capacity();i++){
String temp="";
Vector tempVector = (Vector) table_data.elementAt(i);
tempVector.trimToSize();
for(int v=0;v<tempVector.capacity();v++){
temp+=((String)tempVector.elementAt(v))+" ";
}
temp = temp.trim();
System.out.println(temp);
output_list.add(temp);
}
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw = new FileWriter(output_filename,false);
bw= new BufferedWriter(fw);
for(String i : output_list){
bw.write(i);
bw.newLine();
}
}
catch(FileNotFoundException e){}
finally{
if (bw != null) {
try {
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这是我重写文件的代码。每次单击它时,都有一个 JButton 调用此函数。它传递来自 JTable 的向量。该文件应始终被覆盖。但它实际上只会在我第一次点击按钮时覆盖。问题是什么,我该如何解决?
您没有捕捉到 IOException,因此无法编译
try{
fw = new FileWriteroutput_filename,false);
bw= new BufferedWriter(fw);
for(String i : output_list){
bw.write(i);
bw.newLine();
}
}
catch(IOException e){}
在这个示例和测试代码中,我使用扫描仪保存在 "ENTER" 开始时生成的不同数组。按下的这个键与您的 Button 在文件中写入时所做的相同。
public static void main(String[] args) {
String[][] array = new String[3][3]; //My array of test
for(int i = 0; i < 9; ++i){
array[i/3][i%3] = "#" + i;
}
Scanner sc = new Scanner(System.in); //A scanner to way my input
for(String[] tmp : array){
System.out.print("Press ENTER to continue");
sc.nextLine(); //I am read, press "ENTER" to write in file
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw = new FileWriter("test.txt",false);
bw= new BufferedWriter(fw);
for(String s : tmp){
bw.write(s);
bw.newLine();
}
}
catch(IOException e){}
finally{
if (bw != null) {
try {
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
结果是: 第一次,文件创建
#0
#1
#2
第二次,文件被覆盖:
#3
#4
#5
第三次:
#6
#7
#8
然后程序停止。