try { //创建文件输入流对象,与实际文件相连 fis = new FileInputStream("LineNumberDemo.java"); //根据文件输入流对象创建缓冲区输入流 bis = new BufferedInputStream(fis); //根据缓冲区输入流对象创建行号输入流 lnis = new LineNumberInputStream(bis); //根据行号输入流创建数据输入流 dis = new DataInputStream(lnis); //从数据输入流中读数据 while((strLine=dis.readLine())!=null) { //从行号输入流中取得行号 int nLineNumber = lnis.getLineNumber(); //打印出行号和当前行内容 System.out.println(nLineNumber+":"+strLine); } } catch(Exception e) { e.printStackTrace(); } finally { //关闭数据输入流 dis.close(); } } }编译结果:C:\javacode>javac LineNumberDemo.java -deprecation LineNumberDemo.java:20: warning: java.io.LineNumberInputStream in java.io h en deprecated LineNumberInputStream lnis; ^ LineNumberDemo.java:31: warning: java.io.LineNumberInputStream in java.io h en deprecated lnis = new LineNumberInputStream(bis); ^ LineNumberDemo.java:35: warning: readLine() in java.io.DataInputStream has deprecated while((strLine=dis.readLine())!=null) ^ LineNumberDemo.java:50: unreported exception java.io.IOException; must be c or declared to be thrown dis.close(); ^ 1 error 3 warnings 请问这个该怎么解决呢?谢谢
这是第一个程序 //DataIOTest.java import java.io.*;public class DataIOTest { public static void main(String[] args) throws IOException { //创建数据输出流 DataOutputStream out = new DataOutputStream(new FileOutputStream("content.txt")); //初始化输出数据 double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; int[] units = { 12, 8, 13, 29, 50 }; String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" }; //数据输出 for (int i = 0; i < prices.length; i ++) { out.writeDouble(prices[i]); out.writeChar('\t'); out.writeInt(units[i]); out.writeChar('\t'); out.writeChars(descs[i]); out.writeChar('\n'); } //关闭数据输出流 out.close(); //创建数据输入流 DataInputStream in = new DataInputStream( new FileInputStream("content.txt")); double price; int unit; String desc; double total = 0.0; try { //利用数据输入流读文件内容 while (true) { price = in.readDouble(); in.readChar(); // throws out the tab unit = in.readInt(); in.readChar(); // throws out the tab desc = in.readLine();//这里出错 System.out.println("You've ordered " + unit + " units of " + desc + " at $" + price); total = total + unit * price; } } //捕获异常 catch (EOFException e) { e.printStackTrace(); } System.out.println("For a TOTAL of: $" + total); //关闭数据输入流 in.close(); } } 编译结果: C:\javacode>javac DataIOTest.java -deprecation DataIOTest.java:53: warning: readLine() in java.io.DataInputStream ecated desc = in.readLine(); ^ 1 warning 请问应该怎么解决?谢谢
1。in是什么类型的?不是所有iostream类都有.readLine方法的
2。DataInputStream 的构造方法里有说支持FileInputStream吗?java里很多io类引用各自的读取文件类,并不是所有file related class都可以构造的
3。同2
4。如果提示出错的话,可能是前面有错,或者你没有import那个类。提示没有初始化,应该在引用的时候提示,而不是定义的时候
2 new NOT New
3 try{
.......=new ......
}
或者 public static void main(String[] args) throws IOException
这是第四个程序。我修改了一些。但是系统要求用
C:\javacode>javac LineNumberDemo.java -deprecation 命令编译
//【代码7-6-5】
//LineNumberDemo.java
import java.io.*;
import java.io.EOFException;
class LineNumerDemo
{
public static void main(String args[])
{
//定义数据输入流
DataInputStream dis;
dis=null;
//定义文件输入流
FileInputStream fis;
fis=null;
//定义缓冲区输入流
BufferedInputStream bis;
bis=null;
//定义行号输入流
LineNumberInputStream lnis;
lnis=null;
String strLine;
try
{
//创建文件输入流对象,与实际文件相连
fis = new FileInputStream("LineNumberDemo.java");
//根据文件输入流对象创建缓冲区输入流
bis = new BufferedInputStream(fis);
//根据缓冲区输入流对象创建行号输入流
lnis = new LineNumberInputStream(bis);
//根据行号输入流创建数据输入流
dis = new DataInputStream(lnis);
//从数据输入流中读数据
while((strLine=dis.readLine())!=null)
{
//从行号输入流中取得行号
int nLineNumber = lnis.getLineNumber();
//打印出行号和当前行内容
System.out.println(nLineNumber+":"+strLine);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
//关闭数据输入流
dis.close();
}
}
}编译结果:C:\javacode>javac LineNumberDemo.java -deprecation
LineNumberDemo.java:20: warning: java.io.LineNumberInputStream in java.io h
en deprecated
LineNumberInputStream lnis;
^
LineNumberDemo.java:31: warning: java.io.LineNumberInputStream in java.io h
en deprecated
lnis = new LineNumberInputStream(bis);
^
LineNumberDemo.java:35: warning: readLine() in java.io.DataInputStream has
deprecated
while((strLine=dis.readLine())!=null)
^
LineNumberDemo.java:50: unreported exception java.io.IOException; must be c
or declared to be thrown
dis.close();
^
1 error
3 warnings
请问这个该怎么解决呢?谢谢
//DataIOTest.java
import java.io.*;public class DataIOTest
{
public static void main(String[] args) throws IOException
{
//创建数据输出流
DataOutputStream out = new DataOutputStream(new
FileOutputStream("content.txt"));
//初始化输出数据
double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
int[] units = { 12, 8, 13, 29, 50 };
String[] descs = {
"Java T-shirt",
"Java Mug",
"Duke Juggling Dolls",
"Java Pin",
"Java Key Chain"
};
//数据输出
for (int i = 0; i < prices.length; i ++)
{
out.writeDouble(prices[i]);
out.writeChar('\t');
out.writeInt(units[i]);
out.writeChar('\t');
out.writeChars(descs[i]);
out.writeChar('\n');
}
//关闭数据输出流
out.close(); //创建数据输入流
DataInputStream in = new DataInputStream(
new FileInputStream("content.txt")); double price;
int unit;
String desc;
double total = 0.0; try
{
//利用数据输入流读文件内容
while (true)
{
price = in.readDouble();
in.readChar(); // throws out the tab
unit = in.readInt();
in.readChar(); // throws out the tab
desc = in.readLine();//这里出错
System.out.println("You've ordered " +
unit + " units of " +
desc + " at $" + price);
total = total + unit * price;
}
}
//捕获异常
catch (EOFException e)
{
e.printStackTrace();
}
System.out.println("For a TOTAL of: $" + total);
//关闭数据输入流
in.close();
}
}
编译结果:
C:\javacode>javac DataIOTest.java -deprecation
DataIOTest.java:53: warning: readLine() in java.io.DataInputStream
ecated
desc = in.readLine();
^
1 warning
请问应该怎么解决?谢谢
如果warning,不要紧,这不是错误,因为readLine()被sun deprecated了,即不推荐使用了(当然你还可以照样用它),原因是DataInputStream.readLine()可能无法正确将流中的bytes转换成chars,解决方法是将
DataInputStream d=new DataInputStream(in);转成
BufferedReader r=new BufferedReader(new InputStream(in));详见java.io.DataInputStream#readLine()