`

JAVA读取文件,排序再写出文件

阅读更多

 今天在百度知道看到这么一个问题

 

 

原问题链接:http://zhidao.baidu.com/question/219278917.html#here
 

读取TXT文件的格式为:字母 数字
如: TOM 100 
        JACK 200 
        BILL 50
        CATHY 150 
        
然后按照数字大小排序(由大到小)
输出TXT文件格式为:
         JACK 200
         CATHY 150
         TOM 100
         BILL 50
 

问题补充:

最后一行输出平均值=总和/人数
如:平均值=(200+150+100+50)/4=125

输出为一个新生成的TXT文件,不改变原文件
如读取文件为test.txt, 输出文件为text1.txt
  

 

觉得蛮有意思的,就动手做了个,大家也和我一起来

 
1.首先在D盘建了个name.txt文件,里面内容写上
TOM 100
JACK 200
BILL 50
CATHY 150
 
2.java 读取文件内容
 
我新建了个FeLongIoTest.class,新建了个读取文件内容通用方法
 
/**
	 * 读取文件内容
	 * 
	 * @param path
	 *            路径
	 * @return 文件内容string
	 * @author 金鑫 
	 * @version 3.0 时间:2010年1月23日 14:56:44
	 */
	public static String getFileContent(String path){
		File file = new File(path);
		//分配新的直接字节缓冲区
		ByteBuffer byteBuffer = ByteBuffer.allocateDirect(186140);
		StringBuffer stringBuffer = new StringBuffer(186140);
		try{
			FileInputStream fileInputStream = new FileInputStream(file);
			//用于读取、写入、映射和操作文件的通道。
			FileChannel fileChannel = fileInputStream.getChannel();
			//编码字符集和字符编码方案的组合,用于处理中文,可以更改
			Charset charset = Charset.forName("GBK");
			while (fileChannel.read(byteBuffer) != -1){
				//反转此缓冲区
				byteBuffer.flip();
				CharBuffer charBuffer = charset.decode(byteBuffer);
				stringBuffer.append(charBuffer.toString());
				byteBuffer.clear();
			}
			fileInputStream.close();
		}catch (FileNotFoundException e){
			e.printStackTrace();
		}catch (IOException e){
			e.printStackTrace();
		}
		return stringBuffer.toString();
	}
 
 
3.测试下这个方法行不行
 
	@Test
	public void test(){
		String file = "D:/name.txt";
		String content = getFileContent(file);
		
		System.out.println(content);
}
 
输出:
TOM 100
JACK 200
BILL 50
CATHY 150
ok的,我上面@Test 用了junit4.7, 没用过的你们可以换成main函数
4.数据可以读到了,应为题目中要排序,那么下一步就要把这些数据转换成集合
我这里用到了泛型, 建了一个User 实体类,存放名字和数据
package com.feilong.common.io;

/**
 * 用户
 * 
 * @author <a href="mailto:venusdrogon@163.com">金鑫</a>
 * @version 1.0 2011-1-25 上午10:03:47
 */
public class User{

	/**
	 * 姓名
	 */
	private String	name;

	/**
	 * 数字
	 */
	private int		count;

	public String getName(){
		return name;
	}

	public void setName(String name){
		this.name = name;
	}

	public int getCount(){
		return count;
	}

	public void setCount(int count){
		this.count = count;
	}
}
 
5.怎么把读到的数据转成list 呢?  这么来
讲解: 使用\r\n 把每行分割成数组
        因为题目中要输出最后一句统计的字符串,所以我建了个StringBuilder 装相关数据(这地方别用+直接相连,性能不高)
@Test
	public void test(){
		String file = "D:/name.txt";
		String content = getFileContent(file);
 
		//将内容以换行符转成数组
		String[] rowsContents = content.split("\r\n");
		//内容总共行数
		int rowCount = rowsContents.length;
		//总和
		int sum = 0;
		//最后一句话的数字  (200+150+100+50)
		StringBuilder lastRowOutBuilder = new StringBuilder();
		//集合 存储数据,这题最快的方法是用map 存储值,考虑到 扩展(是否姓名有重复,是否以后会增加属性字段)
		List<User> userList = new ArrayList<User>();
		for (int i = 0; i < rowCount; i++){
			String rowContent = rowsContents[i];
			String[] nameAndCount = rowContent.split(" ");
			User user = new User();
			user.setName(nameAndCount[0]);
			int count = Integer.parseInt(nameAndCount[1]);
			user.setCount(count);
			userList.add(user);
			sum += count;
			lastRowOutBuilder.append(count);
			if (i != rowCount - 1){
				lastRowOutBuilder.append("+");
			}
		}
}
 
 最后一句话拼接技巧: 循环的最后不加+号
把这个list 可以输出测试下,数据已经进去了
6.这下要到排序了
按照数字大小排序(由大到小)
因为list 本身不能排序的,需要使用Collections.sort,需要list  以及Comparator  两个参数
新建UserComparator 类,实现Comparator 接口
我在类里面增加了 排序枚举SortType,方便扩展(要是那一天改成从小到大,只要参数变一下就可以了)
import java.util.Comparator;

/**
 * user 排序
 * 
 * @author <a href="mailto:venusdrogon@163.com">金鑫</a>
 * @version 1.0 2011-1-25 上午10:48:13
 */
public class UserComparator implements Comparator{

	/**
	 *排序方式
	 * 
	 * @author <a href="mailto:venusdrogon@163.com">金鑫</a>
	 * @version 1.0 2011-1-25 上午10:59:02
	 */
	public enum SortType{
		asc, desc
	}

	private SortType	sortType;

	public UserComparator(SortType sortType){
		this.sortType = sortType;
	}

	/* (non-Javadoc)
	 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
	 */
	public int compare(Object arg0,Object arg1){
		User user0 = (User) arg0;
		User user1 = (User) arg1;
		int count0 = user0.getCount();
		int count1 = user1.getCount();
		switch (sortType) {
			case asc:
				if (count0 > count1){
					return 1;
				}else if (count0 < count1){
					return -1;
				}
				break;
			case desc:
				if (count0 > count1){
					return -1;
				}else if (count0 < count1){
					return 1;
				}
				break;
			default:
				break;
		}
		return 0;
	}
}
 
排序调用
Collections.sort(userList, new UserComparator(SortType.desc));
 
8.再把排序好了的list  以及最后一句话 拼接成字符串
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < userList.size(); i++){
			User user = userList.get(i);
			builder.append(user.getName());
			builder.append(" ");
			builder.append(user.getCount());
			builder.append("\r");
		}
		String outString = "平均值=(" + lastRowOutBuilder.toString() + ")/" + rowCount + "=" + sum / rowCount + "";
		builder.append(outString);
		System.out.println(builder.toString());
 
9.最后到输出到 文件了
我新建了个write 方法
	/**
	 * 将字符串写到文件中
	 * 
	 * @param filePath
	 *            文件路径
	 * @param content
	 *            字符串内容
	 */
	public static void write(String filePath,String content){
		try{
			//向文本输出流打印对象的格式化表示形式
			//会自动创建文件,替换覆盖文字(非追加)
			PrintWriter printWriter = new PrintWriter(filePath);
			printWriter.write(content);
			printWriter.close();
		}catch (FileNotFoundException e){
			e.printStackTrace();
		}
	}
 
调用
write("D:/2.txt", builder.toString());
 
10. 这段完整代码
@Test
	public void test(){
		String file = "D:/name.txt";
		String content = getFileContent(file);
		//将内容以换行符转成数组
		String[] rowsContents = content.split("\r\n");
		//内容总共行数
		int rowCount = rowsContents.length;
		//总和
		int sum = 0;
		//最后一句话的数字  (200+150+100+50)
		StringBuilder lastRowOutBuilder = new StringBuilder();
		//集合 存储数据,这题最快的方法是用map 存储值,考虑到 扩展(是否姓名有重复,是否以后会增加属性字段)
		List<User> userList = new ArrayList<User>();
		for (int i = 0; i < rowCount; i++){
			String rowContent = rowsContents[i];
			String[] nameAndCount = rowContent.split(" ");
			User user = new User();
			user.setName(nameAndCount[0]);
			int count = Integer.parseInt(nameAndCount[1]);
			user.setCount(count);
			userList.add(user);
			sum += count;
			lastRowOutBuilder.append(count);
			if (i != rowCount - 1){
				lastRowOutBuilder.append("+");
			}
		}
		//排序
		Collections.sort(userList, new UserComparator(SortType.desc));
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < userList.size(); i++){
			User user = userList.get(i);
			builder.append(user.getName());
			builder.append(" ");
			builder.append(user.getCount());
			builder.append("\r");
		}
		String outString = "平均值=(" + lastRowOutBuilder.toString() + ")/" + rowCount + "=" + sum / rowCount + "";
		builder.append(outString);
		System.out.println(builder.toString());
		write("D:/2.txt", builder.toString());
	}
 
所有的完整代码,我传了附件
这是用纯java自带的类做的,当然有更简单的,比如使用common-io
  • io.rar (3.5 KB)
  • 下载次数: 125
分享到:
评论
9 楼 苹果超人 2011-01-26  
<div class="quote_title">飞天奔月 写道</div>
<div class="quote_div">
<p> 今天在百度知道看到这么一个问题</p>
<p> </p>
<p> </p>
<p> </p>
<pre name="code" class="java">原问题链接:http://zhidao.baidu.com/question/219278917.html#here


读取TXT文件的格式为:字母 数字
如: TOM 100
        JACK 200
        BILL 50
        CATHY 150
       
然后按照数字大小排序(由大到小)
输出TXT文件格式为:
         JACK 200
         CATHY 150
         TOM 100
         BILL 50


问题补充:

最后一行输出平均值=总和/人数
如:平均值=(200+150+100+50)/4=125

输出为一个新生成的TXT文件,不改变原文件
如读取文件为test.txt, 输出文件为text1.txt
  </pre>
<div class="suply-content mt10">
<p> </p>
<p>觉得蛮有意思的,就动手做了个,大家也和我一起来</p>
</div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10"><strong>1.首先在D盘建了个name.txt文件,里面内容写上</strong></div>
<div class="suply-content mt10">
<pre name="code" class="java">TOM 100
JACK 200
BILL 50
CATHY 150</pre>
</div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10"><strong>2.java 读取文件内容</strong></div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10">我新建了个FeLongIoTest.class,新建了个读取文件内容通用方法</div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10">
<pre name="code" class="java">/**
* 读取文件内容
*
* @param path
*            路径
* @return 文件内容string
* @author 金鑫
* @version 3.0 时间:2010年1月23日 14:56:44
*/
public static String getFileContent(String path){
File file = new File(path);
//分配新的直接字节缓冲区
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(186140);
StringBuffer stringBuffer = new StringBuffer(186140);
try{
FileInputStream fileInputStream = new FileInputStream(file);
//用于读取、写入、映射和操作文件的通道。
FileChannel fileChannel = fileInputStream.getChannel();
//编码字符集和字符编码方案的组合,用于处理中文,可以更改
Charset charset = Charset.forName("GBK");
while (fileChannel.read(byteBuffer) != -1){
//反转此缓冲区
byteBuffer.flip();
CharBuffer charBuffer = charset.decode(byteBuffer);
stringBuffer.append(charBuffer.toString());
byteBuffer.clear();
}
fileInputStream.close();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return stringBuffer.toString();
}</pre>
 </div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10"><strong>3.测试下这个方法行不行</strong></div>
<div class="suply-content mt10"> </div>
<div class="suply-content mt10">
<pre name="code" class="java"> @Test
public void test(){
String file = "D:/name.txt";
String content = getFileContent(file);

System.out.println(content);
}</pre>
 </div>
<div class="suply-content mt10">输出:</div>
<div class="suply-content mt10">TOM 100<br>JACK 200<br>BILL 50<br>CATHY 150</div>
<div class="suply-content mt10">ok的,我上面@Test 用了junit4.7, 没用过的你们可以换成main函数</div>
<div class="suply-content mt10"><strong>4.数据可以读到了,应为题目中要排序,那么下一步就要把这些数据转换成集合</strong></div>
<div class="suply-content mt10">我这里用到了泛型, 建了一个User 实体类,存放名字和数据</div>
<div class="suply-content mt10">
<pre name="code" class="java">package com.feilong.common.io;

/**
* 用户
*
* @author &lt;a href="mailto:venusdrogon@163.com"&gt;金鑫&lt;/a&gt;
* @version 1.0 2011-1-25 上午10:03:47
*/
public class User{

/**
* 姓名
*/
private String name;

/**
* 数字
*/
private int count;

public String getName(){
return name;
}

public void setName(String name){
this.name = name;
}

public int getCount(){
return count;
}

public void setCount(int count){
this.count = count;
}
}</pre>
 </div>
<div class="suply-content mt10"><strong>5.怎么把读到的数据转成list 呢?  这么来</strong></div>
<div class="suply-content mt10"><strong></strong></div>
<div class="suply-content mt10">讲解: 使用\r\n 把每行分割成数组</div>
<div class="suply-content mt10">        因为题目中要输出最后一句统计的字符串,所以我建了个StringBuilder 装相关数据(这地方别用+直接相连,性能不高)</div>
<div class="suply-content mt10">
<pre name="code" class="java">@Test
public void test(){
String file = "D:/name.txt";
String content = getFileContent(file);

//将内容以换行符转成数组
String[] rowsContents = content.split("\r\n");
//内容总共行数
int rowCount = rowsContents.length;
//总和
int sum = 0;
//最后一句话的数字  (200+150+100+50)
StringBuilder lastRowOutBuilder = new StringBuilder();
//集合 存储数据,这题最快的方法是用map 存储值,考虑到 扩展(是否姓名有重复,是否以后会增加属性字段)
List&lt;User&gt; userList = new ArrayList&lt;User&gt;();
for (int i = 0; i &lt; rowCount; i++){
String rowContent = rowsContents[i];
String[] nameAndCount = rowContent.split(" ");
User user = new User();
user.setName(nameAndCount[0]);
int count = Integer.parseInt(nameAndCount[1]);
user.setCount(count);
userList.add(user);
sum += count;
lastRowOutBuilder.append(count);
if (i != rowCount - 1){
lastRowOutBuilder.append("+");
}
}
}</pre>
 <br>
</div>
<div class="suply-content mt10"> 最后一句话拼接技巧: 循环的最后不加+号</div>
<div class="suply-content mt10">把这个list 可以输出测试下,数据已经进去了</div>
<div class="suply-content mt10">
<strong>6.这下要到排序了</strong> </div>
<div class="suply-content mt10">按照数字大小排序(由大到小)</div>
<div class="suply-content mt10">因为list 本身不能排序的,需要使用Collections.sort,需要list  以及Comparator  两个参数</div>
<div class="suply-content mt10">新建UserComparator 类,实现Comparator 接口</div>
<div class="suply-content mt10">我在类里面增加了 排序枚举SortType,方便扩展(要是那一天改成从小到大,只要参数变一下就可以了)</div>
<div class="suply-content mt10">
<pre name="code" class="java">import java.util.Comparator;

/**
* user 排序
*
* @author &lt;a href="mailto:venusdrogon@163.com"&gt;金鑫&lt;/a&gt;
* @version 1.0 2011-1-25 上午10:48:13
*/
public class UserComparator implements Comparator{

/**
*排序方式
*
* @author &lt;a href="mailto:venusdrogon@163.com"&gt;金鑫&lt;/a&gt;
* @version 1.0 2011-1-25 上午10:59:02
*/
public enum SortType{
asc, desc
}

private SortType sortType;

public UserComparator(SortType sortType){
this.sortType = sortType;
}

/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object arg0,Object arg1){
User user0 = (User) arg0;
User user1 = (User) arg1;
int count0 = user0.getCount();
int count1 = user1.getCount();
switch (sortType) {
case asc:
if (count0 &gt; count1){
return 1;
}else if (count0 &lt; count1){
return -1;
}
break;
case desc:
if (count0 &gt; count1){
return -1;
}else if (count0 &lt; count1){
return 1;
}
break;
default:
break;
}
return 0;
}
}</pre>
 </div>
<div class="suply-content mt10">排序调用</div>
<div class="suply-content mt10">
<pre name="code" class="java">Collections.sort(userList, new UserComparator(SortType.desc));</pre>
 </div>
<div class="suply-content mt10"><strong>8.再把排序好了的list  以及最后一句话 拼接成字符串</strong></div>
<div class="suply-content mt10">
<pre name="code" class="java"> StringBuilder builder = new StringBuilder();
for (int i = 0; i &lt; userList.size(); i++){
User user = userList.get(i);
builder.append(user.getName());
builder.append(" ");
builder.append(user.getCount());
builder.append("\r");
}
String outString = "平均值=(" + lastRowOutBuilder.toString() + ")/" + rowCount + "=" + sum / rowCount + "";
builder.append(outString);
System.out.println(builder.toString());</pre>
 </div>
<div class="suply-content mt10">
<strong>9.最后到输出到 文件了</strong> </div>
<div class="suply-content mt10">我新建了个write 方法</div>
<div class="suply-content mt10">
<pre name="code" class="java"> /**
* 将字符串写到文件中
*
* @param filePath
*            文件路径
* @param content
*            字符串内容
*/
public static void write(String filePath,String content){
try{
//向文本输出流打印对象的格式化表示形式
//会自动创建文件,替换覆盖文字(非追加)
PrintWriter printWriter = new PrintWriter(filePath);
printWriter.write(content);
printWriter.close();
}catch (FileNotFoundException e){
e.printStackTrace();
}
}</pre>
 </div>
<div class="suply-content mt10">调用</div>
<div class="suply-content mt10">
<pre name="code" class="java">write("D:/2.txt", builder.toString());</pre>
 </div>
<div class="suply-content mt10"><strong>10. 这段完整代码</strong></div>
<div class="suply-content mt10">
<pre name="code" class="java">@Test
public void test(){
String file = "D:/name.txt";
String content = getFileContent(file);
//将内容以换行符转成数组
String[] rowsContents = content.split("\r\n");
//内容总共行数
int rowCount = rowsContents.length;
//总和
int sum = 0;
//最后一句话的数字  (200+150+100+50)
StringBuilder lastRowOutBuilder = new StringBuilder();
//集合 存储数据,这题最快的方法是用map 存储值,考虑到 扩展(是否姓名有重复,是否以后会增加属性字段)
List&lt;User&gt; userList = new ArrayList&lt;User&gt;();
for (int i = 0; i &lt; rowCount; i++){
String rowContent = rowsContents[i];
String[] nameAndCount = rowContent.split(" ");
User user = new User();
user.setName(nameAndCount[0]);
int count = Integer.parseInt(nameAndCount[1]);
user.setCount(count);
userList.add(user);
sum += count;
lastRowOutBuilder.append(count);
if (i != rowCount - 1){
lastRowOutBuilder.append("+");
}
}
//排序
Collections.sort(userList, new UserComparator(SortType.desc));
StringBuilder builder = new StringBuilder();
for (int i = 0; i &lt; userList.size(); i++){
User user = userList.get(i);
builder.append(user.getName());
builder.append(" ");
builder.append(user.getCount());
builder.append("\r");
}
String outString = "平均值=(" + lastRowOutBuilder.toString() + ")/" + rowCount + "=" + sum / rowCount + "";
builder.append(outString);
System.out.println(builder.toString());
write("D:/2.txt", builder.toString());
}</pre>
 </div>
<div class="suply-content mt10">所有的完整代码,我传了附件</div>
<div class="suply-content mt10">这是用纯java自带的类做的,当然有更简单的,比如使用common-io</div>
</div>
<p> </p>
8 楼 chan.d 2011-01-26  
并没有用到泛型。
7 楼 kunanfo 2011-01-26  
finally都不需要写?看来老师教错了
6 楼 xiang37 2011-01-26  
假如考虑到读取文件的大小,如:有100W条记录,那么排序、存入数据库的效率等都需要考虑的!支持楼主的做法
5 楼 akunamotata 2011-01-26  
毛毛k孤鸿 写道
简单问题复杂化



职业病
4 楼 毛毛k孤鸿 2011-01-26  
简单问题复杂化
3 楼 yangyi 2011-01-25  
yangguo 写道
yangyi 写道
其实Collections.sort最终用的也是归并,但是不支持文件归并。这题考的应该是算法吧


yang兄虽然你比较niubility,也不要总是把简单问题复杂化啊。


呵呵,这个解决方案肯定是大型机不是分布式,而且是内存特大的那种。还没有用多路归并,多线程,MapReduce。:))
2 楼 yangguo 2011-01-25  
yangyi 写道
其实Collections.sort最终用的也是归并,但是不支持文件归并。这题考的应该是算法吧


yang兄虽然你比较niubility,也不要总是把简单问题复杂化啊。
1 楼 yangyi 2011-01-25  
其实Collections.sort最终用的也是归并,但是不支持文件归并。这题考的应该是算法吧

相关推荐

    读取文件数字并排序最后输出另一个文件

    读取一个文件中的整数,并将它们从小到大排序,最后输出排序后到另一个文件中

    java读写成绩表

    首先,我们需要理解Java中的文件操作和数据序列化,这两个是读写成绩表的关键技术。 1. **文件操作**:在Java中,我们通常使用`java.io`包中的类进行文件操作。比如`File`类用于表示文件或目录,`BufferedReader`和...

    java自动测试排序算法

    在测试过程中,我们可以利用Java的序列化机制,先将数组写入文件,然后使用排序算法对文件内容进行排序,最后再读取结果并验证其正确性。这种方式对于处理大数据集尤其有用,因为它避免了将整个数据集加载到内存中。...

    data.txt文件

    - `r+`:读写模式,可以读取和修改文件内容。 #### 2. 数据读取 一旦文件被打开,可以通过以下方法读取其内容: - `read()`: 读取整个文件。 - `readline()`: 按行读取文件。 - `readlines()`: 将文件按行读取为...

    java用多线程进行排序算法的比较

    在“xiancheng”这个压缩包文件中,可能包含了实现上述多线程排序算法的Java源代码。通过分析这些代码,你可以深入理解如何在实际项目中应用多线程优化排序算法,并学习如何平衡并行化带来的收益与额外的系统开销。 ...

    排序 java 图形界面

    在本例中,虽然未具体给出排序的实现,但可以通过Java自带的`Arrays.sort()`方法轻松完成。 #### 四、事件监听与响应 - **按钮事件监听**: 使用`ActionListener`接口来监听按钮点击事件。当按钮被点击时,会调用`...

    文本文件实现留言本

    排序则可以通过读取所有留言到内存,排序后再写回文件实现。 此外,还可以添加一些额外的功能,如验证用户身份(用户名和密码),通过加密技术保护敏感信息,以及增加留言的编辑和删除功能。编辑通常涉及找到旧的...

    JAVA实验报告 举重成绩单

    在这个JAVA实验报告中,我们关注的是如何通过编程处理文本文件,特别是涉及到文件的读写操作。实验的主题是“举重成绩单”,目标是掌握JAVA中的字符输入、输出流的使用。 1. **字符输入流(Character Input Stream...

    文件分割与合并

    我们可以创建一个FileOutputStream对象,然后逐个打开小文件,使用FileInputStream读取其内容,再通过FileOutputStream写入。确保每个小文件的数据都被正确地追加到新文件中。 在实现这些功能时,需要注意几个关键...

    Java实现网盘文件管理功能,增删改查,移动,查询,批量删除下载

    - 使用`java.nio`包的`Channels`和`ByteStreams`,可以高效地读取大文件并发送到输出流。 6. **用户认证与权限控制**: - 提及的`user-auth-center`可能指的是用户认证中心,这是实现网盘功能时的重要组成部分。...

    用JAVA语言处理AutoCAD图形数据的研究

    在JAVA中,可以利用字符串处理、文件读写等技术来实现这一过程。例如,使用Java的`BufferedReader`类逐行读取DXF文件,然后根据组码的不同来解析并存储相应的图形实体数据。 #### 3 JAVA处理DXF文件示例 为了更...

    java jdk实列宝典 光盘源代码

    多种方式写文件内容, 按字节写文件内容、按字符写文件内容、按行写文件内容 ; 添加内容到文件结尾;文件的分割和合并;使用StreamTokenizer统计文件的字符数; 序列化和反序列化对象(将不长用的对象暂时持久化到...

    Java语言程序设计(郑莉)第六章课后习题答案

    综合来看,给出的文件内容涉及了Java中文件处理的一些基本操作和高级应用,包括文件的读写、异常处理、二进制文件的复制等。通过这些例题和代码片段,可以更好地理解Java I/O操作的细节和应用场景。这些知识点对于...

    JAVA上百实例源码以及开源项目源代码

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    基于javaswing的体温检测系统

    综上所述,基于Java Swing的体温检测系统集成了多种核心功能和技术,从数据管理到用户交互,再到文件操作,体现了Java在开发桌面应用时的强大能力。开发者在设计和实现这个系统时,需要充分考虑用户需求、数据安全和...

    对输入的字母排序存盘并显示在屏幕上

    接着,程序会读取该文件中的字母内容,对其进行升序排序处理,并将排序后的结果保存到另一个文件中。最后,程序会在控制台上打印出排序后的字母序列。 #### 二、Java基础知识回顾 1. **基本输入流**: - `...

    文件方式商品管理系统

    修改商品则涉及读取原始信息、更新后再写回;删除商品可能需要标记商品为已删除,或者直接从文件中移除。 总的来说,"文件方式商品管理系统"是一个综合性的学习项目,涵盖了文件操作、GUI设计、数据处理等多个方面...

    《Java程序设计》实验报告三.doc

    【Java程序设计】实验报告三主要探讨了如何利用Java编程语言设计一个图形用户界面(GUI)程序,该程序能够接收用户输入的五个浮点数和一个文件路径,将这些数值保存到文件中,然后从文件读取数据进行排序,最后将...

    最新Java面试题

    - **Java跨平台原理**:Java的跨平台特性主要得益于字节码文件(`.class`文件)和Java虚拟机(JVM)。Java程序编译成字节码文件后,由不同平台上的JVM解释执行这些字节码文件,从而实现了“一次编写,到处运行”的...

    Java 上机练习题

    7. **IO流与文件操作**:学习使用File类进行文件的创建、删除、重命名等操作,以及使用FileReader/Writer、BufferedReader/Writer进行文本文件的读写。编写一个程序,实现文件的复制或者内容的追加。 8. **接口与多...

Global site tag (gtag.js) - Google Analytics