我已经使用FileInputStream,FileOutputStream,DataInputStream和DataoutputStream类来编写代码,如下所示:
import java.io.*;
class Demo
{
public static void main(String args[]) throws IOException
{
File f1=new File("A.txt");
File f2=new File("Temp.txt");
if(!f1.exists())
{
System.out.print(" file doesn't exist.");
System.exit(0);
}
if(!f2.exists())
{
if(!f2.createNewFile())
{
System.exit(0);
}
}
FileInputStream fis=new FileInputStream(f1);
FileOutputStream fos=new FileOutputStream(f2);
DataInputStream dis=new DataInputStream(fis);
DataOutputStream dos=new DataOutputStream(fos);
char ch;
try
{
while(true)
{
ch=dis.readChar();
if(ch>=97 && ch<=122)
{
ch=(char)(ch-32);
}
dos.writeChar(ch);
}
}
catch(Exception e1)
{
fos.flush();
fis=new FileInputStream(f2);
fos=new FileOutputStream(f1);
dis=new DataInputStream(fis);
dos=new DataOutputStream(fos);
try
{
while(true)
{
ch=dis.readChar();
dos.writeChar(ch);
}
}
catch(Exception e2)
{
fos.flush();
}
finally
{
fis.close();
fos.close();
}
}
}
}
但它没有将小写字母转换为大写字母。谁能告诉我这段代码中有什么问题?
答案 0 :(得分:0)
您可以使用BufferedReader和BufferedWriter类来读取完整的行,转换为大写并写入整行。
如果出现异常,我只是打印堆栈跟踪以演示缓冲读写器的使用情况,您可以在f2中编写相同的内容或根据您的要求做任何事情。
import java.io.*;
class Demo {
public static void main(String args[]) throws IOException {
File f1 = new File("A.txt");
File f2 = new File("Temp.txt");
if (!f1.exists()) {
System.out.print(" file doesn't exist.");
System.exit(0);
}
if (!f2.exists()) {
if (!f2.createNewFile()) {
System.exit(0);
}
}
BufferedReader bufferedReader = new BufferedReader(new FileReader(f1));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(f2));
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
// here you can have counters for no. of lines and no. of
// characters for debugging and statistics purpose
System.out.println(line);
bufferedWriter.write(line.toUpperCase());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
bufferedReader.close();
bufferedWriter.close();
}
}
}
答案 1 :(得分:0)
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ConvertLowerToUpper {
public static void main(String[] args) throws IOException {
try (PrintWriter output = new PrintWriter("Temp.txt")) {
Files.readAllLines(Paths.get("A.txt")).stream()
.map(String::toUpperCase)
.forEach(output::println);
} catch (Exception e) {
e.printStackTrace();
}
}
}
此代码演示了使用Java 8 Streams执行此操作的简短方法 - 只需读取所有行,将它们映射到大写等效项并将它们打印到PrintWriter。添加额外的错误处理以应对丢失的文件等,您已完成