关于读取txt文件的问题。

wsyccc0725 2011-11-16 12:37:26
要把txt文件中的字母abcdefghijklm转换成nopqrstuvwxyz。code 写出来了,但是为什么printout的只有最后一行。


import java.util.*;
import java.io.*;
public class Rot {

/**
* @param args
*/
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
String FileName=readFileName("Please enter an input file name:");
Scanner infile = new Scanner (new File(FileName+".txt"));
String result=transformed(infile);
FileName=readFileName("Please enter an output file name:");
PrintWriter outfile=new PrintWriter(new FileWriter(FileName+".txt"));
System.out.println(result);
outfile.println(result);
infile.close();
outfile.close();
}
public static String readFileName(String msg){
Scanner inkey = new Scanner(System.in);
System.out.println(msg);
return inkey.nextLine();
}
public static String transformed(Scanner in)throws IOException{
String line=null;
int num=13;
while(in.hasNextLine()){
line=in.nextLine();
int count=0;
while(count<line.length()){
char letter=line.charAt(count);
if(letter>='a' && letter<'n')
letter+=num;
else if(letter>='n' && letter<='z')
letter-=num;
if(letter>='A' && letter<'N')
letter+=num;
else if(letter>='N' && letter<='Z')
letter-=num;
count++;
}
}
return line;
}
}
...全文
91 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
coooliang 2011-11-16
  • 打赏
  • 举报
回复
这就要用到传说中的IO流了。

public static void main(String[] args) throws IOException {
String dir = "D:/workspace/TestProject/src/com/io/ByteReadFileTest.java";
String src = "D:/workspace/TestProject/src/com/io/out.java";
InputStream input = new FileInputStream(dir);
OutputStream out = new FileOutputStream(src);
int length = 0;
byte[] b = new byte[1024];// 缓冲区
while ((length = input.read(b)) != -1) {
System.out.print(new String(b, 0, length));
out.write(b, 0, length);// 重要...
out.flush();
}
out.close();
}
qybao 2011-11-16
  • 打赏
  • 举报
回复
while(in.hasNextLine()){ //你每次循环读入一行,进行转换,
line=in.nextLine(); //下一次循环的时候,前一行的信息就丢失了

所以,你应该把每次循环的结果保存到一个临时变量,最后把所有结果返回


StringBuilder buf = new StringBuilder();
while(in.hasNextLine()){
line=in.nextLine();
int count=0;
while(count<line.length()){
char letter=line.charAt(count);
if(letter>='a' && letter<'n')
letter+=num;
else if(letter>='n' && letter<='z')
letter-=num;
if(letter>='A' && letter<'N')
letter+=num;
else if(letter>='N' && letter<='Z')
letter-=num;
count++;
buf.append(letter); //保留到临时变量
}
buf.append("\n"); //追加换行符
}
return buf.toString();
wsyccc0725 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cl61917380 的回复:]

这就要用到传说中的IO流了。
Java code

public static void main(String[] args) throws IOException {
String dir = "D:/workspace/TestProject/src/com/io/ByteReadFileTest.java";
String src = "D:/work……
[/Quote]
这个我们还没有学到,老师只教了怎么用Scanner读取和写出txt文件。麻烦您帮我看看这个程序有什么错么?

import java.util.*;
import java.io.*;
public class Rot {

/**
* @param args
*/
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
String FileName=readFileName("Please enter an input file name:");
Scanner infile = new Scanner (new File(FileName+".txt"));
String result=transformed(infile);
FileName=readFileName("Please enter an output file name:");
PrintWriter outfile=new PrintWriter(new FileWriter(FileName+".txt"));
System.out.println(result);
outfile.println(result);
infile.close();
outfile.close();
}
public static String readFileName(String msg){
Scanner inkey = new Scanner(System.in);
System.out.println(msg);
return inkey.nextLine();
}
public static String transformed(Scanner in)throws IOException{
String line=null;
int num=13;
while(in.hasNextLine()){
line=in.nextLine();
int count=0;
while(count<line.length()){
char letter=line.charAt(count);
if(letter>='a' && letter<'n')
letter+=num;
else if(letter>='n' && letter<='z')
letter-=num;
if(letter>='A' && letter<'N')
letter+=num;
else if(letter>='N' && letter<='Z')
letter-=num;
count++;
}
}
return line;
}
}

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧