通过IO库将public class Test
{
public static void main(String[] args)
{
//Some statements
}
}
改成public class Test{
public static void main(String[] args){
//Some statements
}
}
下面是我写的代码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();
}
}}每次运行后我选的文件后就变为空,里面什么都没有了
不知道哪里不对
{
public static void main(String[] args)
{
//Some statements
}
}
改成public class Test{
public static void main(String[] args){
//Some statements
}
}
下面是我写的代码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();
}
}}每次运行后我选的文件后就变为空,里面什么都没有了
不知道哪里不对
直接用IDE里的“格式化代码”改一下模板不就好了、、、
Eclipse、Netbeans都有代码格式化功能、、、
我是想通过java的IO库自己写的程序把
一个简单的次行块风格的代码变成一个行尾式风格的代码
例如,将public class Test
{
public static void main(String[] args)
{
//Some statements
}
}
改写成public class Test{
public static void main(String[] args){
//Some statements
}
}
while(input.hasNext()){
if(input.next().equals("{")){
output.println("{");
}
else{
output.print(input.next());
}
}
没经过测试 不知道对不对,lz自己测测
Exception while removing reference: java.lang.InterruptedException
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.java2d.Disposer.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
然后被选中的文件就被“格式化”了,里面什么也没有了
throws FileNotFoundException
使用指定文件创建不具有自动行刷新的新 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者将使用此 Java 虚拟机实例的默认 charset 进行字符编码。
参数:
file - 作为此 writer 的目标使用的文件。如果存在该文件,则将其大小截取为零;否则,创建一个新文件。将输出写入文件中,并对其进行缓冲处理。
抛出:
FileNotFoundException - 如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他一些错误
SecurityException - 如果存在安全管理器,并且 checkWrite(file.getPath()) 拒绝对文件进行写入访问。
从以下版本开始:
1.5建议楼主多看API,文件内容清空的问题应该明白了。
所以格式化后的代码放到了当前目录下的同名文件中。
代码的逻辑好像也有问题,下面是我写的一段示例代码,楼主可以参考参考。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();
} }}