java文件操作的问题

luxiaoxun 江苏金陵科技集团有限公司 软件工程师  2008-09-04 02:34:49
文件过滤器的问题
import java.io.*;

public class FindDirectories
{
public static void main(String[] args)
{
File pathName= new File("E:");
ExtensionFilter filter=new ExtensionFilter("txt"); //有问题?不会改
String[] fileNames=pathName.list(filter);
for(int i=0; i<fileNames.length; ++i)
{
System.out.println(fileNames[i]);
}
}

public class ExtensionFilter implements FilenameFilter
{
public ExtensionFilter(String ext)
{
extension="."+ext;
}

public boolean accept(File dir,String name)
{
return name.endsWith(extension);
}

private String extension;
}
}


文件读取的问题:
import java.io.*;
import java.util.*;

public class FileTest1
{
public static void main(String[] args)
{
File f=new File("F:\\java\\123.txt");
try
{
if(f.exists())
{
DataInputStream in=new DataInputStream(new FileInputStream(f));
while(in.read()!=-1)
{
int n=in.readInt();
System.out.println(n);
}
}
else
{
f.createNewFile();
}
}
catch(IOException e)
{
System.out.println(e);
}
}
}
123.txt中只有int的数据(12 23 56) 为什么无法读取?

初学java 谢谢
...全文
94 点赞 收藏 14
写回复
14 条回复
luxiaoxun 2008年09月04日
谢谢各位 结贴了
回复 点赞
luxiaoxun 2008年09月04日
[Quote=引用 10 楼 yinianshen 的回复:]
文件过滤器的问题:楼主犯了语法错误啊。一个java文件中只能定义一个public类型的类。而楼主在这个类中定义了两个public 类。
我的修改如下:

Java code
public class FindDirectories {

/**
* @param args
*/
public static void main(String[] args) {
File pathName = new File("E:\\");
ExtensionFilter filter = new ExtensionFilter("txt");
String[] fileNam…
[/Quote]

郁闷 没看到 害我弄了半天
回复 点赞
mayuanfei 2008年09月04日
不是不成.是不够简练.你这个过滤又不是用在很多地方.所以用匿名类就可以了.
10楼已经按照你的方式实现了
回复 点赞
luxiaoxun 2008年09月04日
import java.io.*;
import java.io.FileFilter.*;

public class FindDirectories
{
public static void main(String[] args)
{
File pathName= new File("E:\\");
ExtensionFilter filter=new ExtensionFilter("txt");
String[] fileNames=pathName.list(filter);
for(int i=0; i<fileNames.length; ++i)
{
System.out.println(fileNames[i]);
}
}

public class ExtensionFilter implements FilenameFilter
{
public ExtensionFilter(String ext)
{
extension="."+ext;
}

public boolean accept(File dir,String name)
{
return name.endsWith(extension);
}

private String extension;
}
}
为什么这样写就不行呢? 一定要用匿名类吗?

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type FindDirectories is accessible. Must qualify the allocation with an enclosing instance of type FindDirectories (e.g. x.new A() where x is an instance of FindDirectories).

at FindDirectories.main(FindDirectories.java:9)
回复 点赞
淡泊明志-宁静致远 2008年09月04日
文件过滤器的问题:楼主犯了语法错误啊。一个java文件中只能定义一个public类型的类。而楼主在这个类中定义了两个public 类。
我的修改如下:

public class FindDirectories {

/**
* @param args
*/
public static void main(String[] args) {
File pathName = new File("E:\\");
ExtensionFilter filter = new ExtensionFilter("txt");
String[] fileNames = pathName.list(filter);
for (int i = 0; i < fileNames.length; ++i) {
System.out.println(fileNames[i]);
}
}

}

class ExtensionFilter implements FilenameFilter {
public ExtensionFilter(String ext) {
extension = "." + ext;
}

public boolean accept(File dir, String name) {
return name.endsWith(extension);
}

private String extension;
}

这样就没问题了。
回复 点赞
mayuanfei 2008年09月04日
目录文件过滤

import java.io.File;
import java.io.FilenameFilter;

public class FindDirectories {

public static void main(String[] args) {
File pathName = new File("E:\\");//这里注意要加上\\或/(E:\\或E:/)
String[] fileNames = pathName.list(new FilenameFilter(){
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")) return true;
return false;
}
});
for (int i = 0; i < fileNames.length; ++i) {
System.out.println(fileNames[i]);
}
}

}


读取文件

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class FileTest1 {
public static void main(String[] args) {
File f = new File("E:\\123.txt");
try {
if (f.exists()) {
DataInputStream in = new DataInputStream(new FileInputStream(f));
/*DataInputStream 一般用来读DataOutputStream写出来的东西,而不是你自己用notepad写的东西。*/
System.out.println(in.readLine());//这个方法已经不推荐使用了.但是可以看到结果.
} else {
f.createNewFile();
}
} catch (IOException e) {
System.out.println(e);
}
}

}

回复 点赞
luxiaoxun 2008年09月04日
[Quote=引用 7 楼 zhangkai08111 的回复:]

读int?
那就要一行一行的读 readLine(),然后用split分割.再转换就欧了

[/Quote]
BufferedReader in=new BufferedReader(new FileReader(f));
String s;
while((s = in.readLine())!=null)
{
StringTokenizer t=new StringTokenizer(s," ");
while(t.hasMoreTokens())
{
System.out.println(t.nextToken());
}
}
我知道可以这样处理,但为什么不能用readInt()呢?
java里的流没有c++的方便啊
回复 点赞
小爽昵称已被占用 2008年09月04日
[Quote=引用 6 楼 luxiaoxun 的回复:]
int n = 0;
while((n = in.read())!= -1){
  System.out.println((char)n);

一个一个字节读取  我想读取int  不过还是谢谢justinavril

[/Quote]
读int?
那就要一行一行的读 readLine(),然后用split分割.再转换就欧了
回复 点赞
luxiaoxun 2008年09月04日
int n = 0;
while((n = in.read())!= -1){
System.out.println((char)n);

一个一个字节读取 我想读取int 不过还是谢谢justinavril
回复 点赞
justinavril 2008年09月04日
[Quote=引用 4 楼 luxiaoxun 的回复:]
引用 1 楼 justinavril 的回复:

should be like this:


Java code
int n = 0;
while((n = in.readInt())!= -1){
System.out.println(n);


还是不行啊
eclipse下是:

825368626
857748276
java.io.EOFException
[/Quote]
Sorry, I know what's going on...

int n = 0; 
while((n = in.read())!= -1){
System.out.println((char)n);


Try this code...
回复 点赞
luxiaoxun 2008年09月04日
[Quote=引用 1 楼 justinavril 的回复:]

should be like this:


Java code
int n = 0;
while((n = in.readInt())!= -1){
System.out.println(n);
[/Quote]

还是不行啊
eclipse下是:

825368626
857748276
java.io.EOFException
回复 点赞
justinavril 2008年09月04日
[Quote=引用 2 楼 justinavril 的回复:]
Java code public class ExtensionFilter implements FilenameFilter
{
public ExtensionFilter(String ext)
{
extension="."+ext;
}

public boolean accept(File dir,String name)
{
return name.endsWith(extension);
}

private String extension;
}
}



What is "extension"? Where did u define this variable?
[/Quote]

Sorry,,,,,I didn't see u define it at the bottom of code....
回复 点赞
justinavril 2008年09月04日
    public class ExtensionFilter implements FilenameFilter 
{
public ExtensionFilter(String ext)
{
extension="."+ext;
}

public boolean accept(File dir,String name)
{
return name.endsWith(extension);
}

private String extension;
}
}


What is "extension"? Where did u define this variable?
回复 点赞
justinavril 2008年09月04日
while(in.read()!=-1)
{
int n=in.readInt();
System.out.println(n);

should be like this:

int n = 0;
while((n = in.readInt())!= -1){
System.out.println(n);
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告