看了mars老师的java视频,关于io的输入输出遇到问题了,请高手指点指点
发布网友
发布时间:2022-04-30 07:47
我来回答
共3个回答
热心网友
时间:2023-10-21 09:59
《mars java开发视频》百度网盘资源免费下载
链接:https://pan.baidu.com/s/1TPuFFAQ7y11SlUXkw-LviQ
提取码:6eug
mars java开发视频|Java当中的异常(一).mp4|Java4Android_01_ppt.png|53.mp4|52_定义输入输出格式.mp4|51_综合练习(二).mp4|50_综合练习(一).mp4|49_开发工具之Eclipse(四).mp4|48_开发工具之Eclipse(三).mp4|47_开发工具之Eclipse(二).mp4|46_开发工具之Eclipse(一).mp4|45_hashCode()与toString().mp4|44_equals函数的作用.mp4|43_类集框架(三).mp4|42_类集框架(二).mp4
热心网友
时间:2023-10-21 09:59
错误在于输入流两次去读取了数据:
fis.read(buffer,0,buffer.length);
int temp = fis.read(buffer,0,buffer.length);//生成一个temp变量用来接收读取量,在写入时方便使用。
第一次已经读完了,所以第二次再去读取的时候,就没有了,那么temp=-1 ,不相信你可以打印下。自然而然会报IndexOutOfBoundsException。
修改方法:去掉:
fis.read(buffer,0,buffer.length);
这句代码。
以下提供可运行的代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
class Test {
public static void main(String args[]) {
FileInputStream fis = null; // 声明输入流的引用。
FileOutputStream fos = null;// 声明输出流的引用。
try {
fis = new FileInputStream("e:/from.txt");// 生成代表输入流的对象。
byte[] buffer = new byte[100]; // 生成一个字节数组。
//fis.read(buffer, 0, buffer.length);
/*
* 调用输入流的read方法并设置参数,读取数据
*
* buffer.length是调用buffer的长度用以设置读取量
* 。
*/
fos = new FileOutputStream("e:/to.txt");// 生成输出流的对象。
int temp = fis.read(buffer, 0, buffer.length);// 生成一个temp变量用来接收读取量,在写入时方便使用。
fos.write(buffer,0, temp);// 调用输出流方法write并设置参数用以输出写入。temp起到作用(读取多少就写入多少)。
/*
* for(int i =0; i<buffer.length; i++){ //打印出buffer里的数据,结果为①
*
* System.out.println(buffer[i]);
*
* }
*/
}
catch (Exception e) {
//e.printStackTrace();
System.out.println(e);
}
}
}
热心网友
时间:2023-10-21 10:00
int temp = fis.read(buffer,0,buffer.length);//生成一个temp变量用来接收读取量,在写入时方便使用。
好像是这句出问题了
indexoutofboundsException 越界
就是超出int的最大范围了追问把注释全删了,还是不行,错误提示还是一样的,
追答int temp 改成long temp 试试
热心网友
时间:2023-10-21 09:59
《mars java开发视频》百度网盘资源免费下载
链接:https://pan.baidu.com/s/1TPuFFAQ7y11SlUXkw-LviQ
提取码:6eug
mars java开发视频|Java当中的异常(一).mp4|Java4Android_01_ppt.png|53.mp4|52_定义输入输出格式.mp4|51_综合练习(二).mp4|50_综合练习(一).mp4|49_开发工具之Eclipse(四).mp4|48_开发工具之Eclipse(三).mp4|47_开发工具之Eclipse(二).mp4|46_开发工具之Eclipse(一).mp4|45_hashCode()与toString().mp4|44_equals函数的作用.mp4|43_类集框架(三).mp4|42_类集框架(二).mp4
热心网友
时间:2023-10-21 09:59
错误在于输入流两次去读取了数据:
fis.read(buffer,0,buffer.length);
int temp = fis.read(buffer,0,buffer.length);//生成一个temp变量用来接收读取量,在写入时方便使用。
第一次已经读完了,所以第二次再去读取的时候,就没有了,那么temp=-1 ,不相信你可以打印下。自然而然会报IndexOutOfBoundsException。
修改方法:去掉:
fis.read(buffer,0,buffer.length);
这句代码。
以下提供可运行的代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
class Test {
public static void main(String args[]) {
FileInputStream fis = null; // 声明输入流的引用。
FileOutputStream fos = null;// 声明输出流的引用。
try {
fis = new FileInputStream("e:/from.txt");// 生成代表输入流的对象。
byte[] buffer = new byte[100]; // 生成一个字节数组。
//fis.read(buffer, 0, buffer.length);
/*
* 调用输入流的read方法并设置参数,读取数据
*
* buffer.length是调用buffer的长度用以设置读取量
* 。
*/
fos = new FileOutputStream("e:/to.txt");// 生成输出流的对象。
int temp = fis.read(buffer, 0, buffer.length);// 生成一个temp变量用来接收读取量,在写入时方便使用。
fos.write(buffer,0, temp);// 调用输出流方法write并设置参数用以输出写入。temp起到作用(读取多少就写入多少)。
/*
* for(int i =0; i<buffer.length; i++){ //打印出buffer里的数据,结果为①
*
* System.out.println(buffer[i]);
*
* }
*/
}
catch (Exception e) {
//e.printStackTrace();
System.out.println(e);
}
}
}
热心网友
时间:2023-10-21 10:00
int temp = fis.read(buffer,0,buffer.length);//生成一个temp变量用来接收读取量,在写入时方便使用。
好像是这句出问题了
indexoutofboundsException 越界
就是超出int的最大范围了追问把注释全删了,还是不行,错误提示还是一样的,
追答int temp 改成long temp 试试