悬赏100分,关于JAVA文件读写操作问题,只有23行代码,请找错!
发布网友
发布时间:2023-12-25 18:05
我来回答
共5个回答
热心网友
时间:2024-07-15 16:57
package kjyhk;
import java.io.File;
import java.io.FileInputStream;
public class jhgj {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("e:\\filename.txt");
try {
FileInputStream fis=new FileInputStream(file);
byte []buffer=new byte[1024];
String result="";
int len=0;
while((len=fis.read(buffer))!=-1){
result+=new String(buffer);
}
fis.close();
System.out.println(result+"abcdefg");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
追问问题解决了,是要加个trim()
热心网友
时间:2024-07-15 16:57
输出 是都输出 了,只过byte数组里前一部分填充了内容,后一部分全是空白,输出时会占用很多位置 ,造成后面的字符串输出在最后面,你大概是没注意。把空白过滤掉输出就可以了。
import java.io.File;
import java.io.FileInputStream;
import java.lang.reflect.Array;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("F:\\filename.txt");
try {
FileInputStream fis=new FileInputStream(file);
byte []buffer=new byte[1024];
String result="";
int len=0;
while((len=fis.read(buffer))!=-1){
result+=new String(buffer);
}
fis.close();
System.out.println(result.trim()+"abcdefg");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
热心网友
时间:2024-07-15 16:58
给你提供一个思路:你试着把buffer数组的大小改小一点,看看效果,比如改为buffer[9]
热心网友
时间:2024-07-15 16:58
你把控制台输出结果拉到最右边应该能找到你的abcdefg
1. 可以改成这样:
System.out.println(result);
System.out.println("abcdefg");
2. 再或者你把你的byte数组长度定义小一点,如:10,也ok
这里就是控制台打印出了整个1024长度的数组,最后才加上你的abcdefg,所以你第一眼看不到此输出。
3. 再或者,可以加个trim去空位就ok了:
result+=new String(buffer).trim();
热心网友
时间:2024-07-15 16:59
很简单,你把控制台滑块往右拖下,就看到abcdefg了,已经打印了,你打印下result.length就啥都明白了