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 谢谢
...全文
219 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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)
  • 打赏
  • 举报
回复
文件过滤器的问题:楼主犯了语法错误啊。一个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++的方便啊
  • 打赏
  • 举报
回复
[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);

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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