运行后,newTest文件中无任何内容,无报错。
是我哪里有问题吗?
import java.io.*;
public class StreamTest {
public static void main(String[] args) {
FileInputStream fis;
InputStreamReader inputStreamReader = null;
FileOutputStream outputStream;
OutputStreamWriter outputStreamWriter = null;
try {
fis = new FileInputStream("D://Test.txt");
inputStreamReader = new InputStreamReader(fis);
outputStream = new FileOutputStream("D://newTest.txt");
outputStreamWriter = new OutputStreamWriter(outputStream);
char[] arr = new char[1024];
int len = 0;
while ((len = inputStreamReader.read(arr, 0, len)) > 0) {
outputStreamWriter.write(arr, 0, len);
}
System.out.println(len);//运行后输出0
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
int len = 0;
while ((len = inputStreamReader.read(arr, 0, len)) > 0)
这样写是不满足循环条件的,len初始就是0,等价于read(arr, 0, 0)从0位置读取0个字符吗,结果怎么会大于0?
修改如下:
while ((len = inputStreamReader.read(arr, 0, 1024)) > 0)
或者
while ((len = inputStreamReader.read(arr))!=-1)
完整代码如下:
import java.io.*;
public class Main {
public static void main(String[] args){
FileInputStream fis;
InputStreamReader inputStreamReader = null;
FileOutputStream outputStream;
OutputStreamWriter outputStreamWriter = null;
try {
fis = new FileInputStream("D://Test.txt");
inputStreamReader = new InputStreamReader(fis);
outputStream = new FileOutputStream("D://newTest.txt");
outputStreamWriter = new OutputStreamWriter(outputStream);
char[] arr = new char[1024];
int len = 0;
while ((len = inputStreamReader.read(arr))!=-1) {
outputStreamWriter.write(arr);
outputStreamWriter.flush(); //每次写完记得flush,刷新缓存区的内容
}
System.out.println(len);//运行后输出0
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
while ((len = inputStreamReader.read(arr, 0, len)) > 0) {
outputStreamWriter.write(arr, 0, len);
}
中read(arr,0,len)改为read(arr)试一下。
16行
while ( (len = inputStreamReader(read))> 0 ){
}
改一下试试, 你这里面用到 read(arr,0,len) 的时候 len 应该 =0。
方法跑完后才会给len 赋值, 所有len 还是0
如果上述还不行,把char类型数组改为byte类型数组,尝试一下。
public class FileTest8 {
public static void main(String[] args) throws IOException {
// 新创建一个文件"E:\\笔记\\test4.txt",往文件中写入"元旦假期我在学习""学习使我快乐",然后读取文件内容,并把它重新写到"E:\\笔记\\test5.txt"
String pathName = "E:\\笔记\\test4.txt";
String pathName1 = "E:\\笔记\\test5.txt";
File file = new File(pathName);
File file1 = new File(pathName1);
FileWriter fw = null;
BufferedWriter bw = null;
FileWriter fw1 = null;
BufferedWriter bw1 = null;
FileReader fr = null;
BufferedReader br = null;
try {
// 创建文件
file.createNewFile();
file1.createNewFile();
// 写入内容
fw = new FileWriter(pathName);
bw = new BufferedWriter(fw);
fw1 = new FileWriter(pathName1);
bw1 = new BufferedWriter(fw1);
String str1 = "元旦假期我在学习";
String str2 = "学习使我快乐";
bw.write(str1);
bw.newLine();
bw.write(str2);
bw.flush();
// 读取内容
fr = new FileReader(pathName);
br = new BufferedReader(fr);
String line = null;
while ((line=br.readLine())!=null){
System.out.println(line);
// 重新写入新文件
bw1.write(line);
bw1.newLine();
bw1.flush();
}
System.out.println("test4.txt的长度为:"+file.length()+"字节");
System.out.println("test5.txt的长度为:"+file1.length()+"字节");
} catch (IOException e) {
e.printStackTrace();
} finally {
bw1.close();
br.close();
fr.close();
fw1.close();
bw.close();
fw.close();
}
}
}
结果
元旦假期我在学习
学习使我快乐
test4.txt的长度为:44字节
test5.txt的长度为:46字节
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!