通过IO库将
- Java code
public class Test{ public static void main(String[] args) { //Some statements }}
改成
- Java code
public class Test{ public static void main(String[] args){ //Some statements }}
下面是我写的代码
- Java code
package ex09;import java.io.*;import java.util.*;import javax.swing.JFileChooser;public class ex09_16 { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO 自动生成方法存根 JFileChooser fileChooser=new JFileChooser(); if(fileChooser.showOpenDialog(null) ==JFileChooser.APPROVE_OPTION){ File sourceFile=fileChooser.getSelectedFile(); Scanner input=new Scanner(sourceFile); PrintWriter output=new PrintWriter(sourceFile); while(input.hasNext()){ while(input.next().equals("{")){ output.println("\r{"); } } input.close(); output.close(); } }}
每次运行后我选的文件后就变为空,里面什么都没有了
不知道哪里不对
------解决方案--------------------
PrintWriter
public PrintWriter(File file)
throws FileNotFoundException
使用指定文件创建不具有自动行刷新的新 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者将使用此 Java 虚拟机实例的默认 charset 进行字符编码。
参数:
file - 作为此 writer 的目标使用的文件。如果存在该文件,则将其大小截取为零;否则,创建一个新文件。将输出写入文件中,并对其进行缓冲处理。
抛出:
FileNotFoundException - 如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他一些错误
SecurityException - 如果存在安全管理器,并且 checkWrite(file.getPath()) 拒绝对文件进行写入访问。
从以下版本开始:
1.5
建议楼主多看API,文件内容清空的问题应该明白了。
所以格式化后的代码放到了当前目录下的同名文件中。
代码的逻辑好像也有问题,下面是我写的一段示例代码,楼主可以参考参考。
- Java code
import java.io.*;import java.util.*;import javax.swing.JFileChooser;public class Main { private static final String NONE = "NONE";//当读取的第二行没有时,设置为该字符串 public static void main(String[] args) throws Exception { JFileChooser fileChooser = new JFileChooser(); if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File sourceFile = fileChooser.getSelectedFile(); Scanner input = new Scanner(sourceFile); PrintWriter output = new PrintWriter(new File(sourceFile.getName())); //每次都去读两行(如果第二行没有的话,就设置为"NONE") String first = "";//保存读取到的第一行 String second = "";//保存读取到的第二行 input.useDelimiter("\r\n");//设置分割符为换行。默认情况下该分隔符模式与空白匹配 while (input.hasNext()) { first = input.next();//读取第一行 if(input.hasNext()) {//如果第二行存在的话,读取第二行 second = input.next(); } else {//如果没有第二行,就设置为"NONE" second = NONE; } //如果第二行为"{",就把第二行加到第一行后面写到文件中 if(second.trim().equals("{")) { output.println(first + second); } else {//否则的话,先输出第一行,如果第二行存在的话,接着输出第二行 output.println(first); if(!second.equals(NONE)) { output.println(second); } } } input.close(); output.close(); } }}