package javaapplication11;
import java.util.Scanner;
import java.io.*;
/**
*
* @author jenison-3631
*/
public class JavaApplication11 {
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException
{
// TODO code application logic here
// File file = new File("/Users/jenison-3631/Desktop/csvv.txt");
int n,z=1;
FileWriter writr = new FileWriter("/Users/jenison-3631/Desktop/csvv.txt");
FileReader fr= new FileReader("/Users/jenison-3631/Desktop/csvv.txt");
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw= new BufferedWriter(writr);
try{
while(z==1)
{
System.out.println("please enter your choice\n1.Add number\n2.Delete number\n3.List all\n4.Search number");
Scanner s= new Scanner(System.in);
n= s.nextInt();
switch(n)
{
case 1:
String str;
String number;
System.out.println("Enter the name");
s.nextLine();
str= s.nextLine();
System.out.println("Enter the number");
number=s.nextLine();
System.out.println(str+" "+number);
/* writer.append(str);
writer.append(',');
writer.append(number);
writer.append('\n');*/
String actual=str+","+number+"\n";
bw.write(actual,0,actual.length());
break;
case 2:
String del=null;
String line=null;
String spl=",";
System.out.println("Enter the name whose phone number should be deleted");
s.nextLine();
del=s.nextLine();
while((line=br.readLine())!=null)
{
String[] country = line.split(spl);
System.out.println("hai"+country[0]);
}
System.out.println(del);
break;
}
System.out.println("Do u wish to continue....if yes press 1 else press 2");
z= s.nextInt();
}
}
finally{
bw.close();
br.close();
}
}
}
在我的情况2中,当我尝试从文件csvv.txt中取回名称时,该文件不起作用,因为该文件实际上没有数据。但是当我单独运行案例1时,数据在文件中写入
BufferedWriter
不会立即写入,因为它会 缓冲 给定的数据。
假设您在公司的邮件室工作。有人走进来并寄给客户。您需要10分钟才能到街上的邮局邮寄。您会立即接受这封信,还是会等着看是否有人会先给您带来一封信?
这是缓冲:您不必等待立即进行繁琐的操作(走在街上),而是可以等待并立即收集很多事情要做-
如果您要寄100封信,走下来仍然只需要10分钟即使在街道上将它们塞进邮箱的时间稍长一些,也是如此。
计算机上的IO也是这样:它很昂贵。写入磁盘,发送到网络等速度很慢,因此您不必重复执行这些操作。
但是您是否应该关心缓冲的发生?在很大程度上,没有。在邮件室的示例中,人们只想放下信件,并知道将来会在某个时候寄出。一旦他们把它放下,对他们来说,现在走在街上还是先等待100个字母都无关紧要。
在代码中,您通常不关心何时写入数据。它只是在某个时间点被写入,例如,在关闭文件编写器时,或者在您要求将一定数量的数据写入文件时。
如果您担心在其中一种情况发生之前就已写入数据,则可以致电bw.flush()
强制其立即发生。
您可以在Oracle的Essential
Java教程中阅读有关IO和缓冲的更多信息。您可以从这里开始,但是有关缓冲的内容在这里
问题内容: 还是? 我有一个来自的线程对象: 其中pObject是实现Runnable接口的类的对象,然后在线程对象上调用start方法,如下所示: 现在,我的理解是,当调用start()时,JVM隐式(立即)调用了run()方法,该方法可能会被覆盖(就我而言) 但是,在我的情况下,似乎没有立即(根据需要)调用start()方法,而是直到从调用块完成其他语句/方法为止,即,如果在start()调用
问题内容: 我正在尝试使用编写一个简单的代码,但是只是不愿等待它假定的时间而代码立即执行。我究竟做错了什么? 问题答案: 您正在立即调用该函数并计划其返回值。 使用: 注意:没有原谅。
在上面的代码中,我得到的输出是: 在我做 d1.name 之后=“亚瑟” 我期望输出是
问题内容: 好的,我会尽快解决这个问题,因为它应该很容易解决… 我读过很多类似的问题,答案似乎非常明显。首先,我不需要查找任何内容!但是…我有一个错误,我无法理解如何修复或为什么会发生。 如下: 与此相关的代码更多,但这就是我的问题所在。应该工作吧? 我也尝试过这个: 所以我有这两个,两者应该相同。我实际上是将状态设置为与其上方的行相同! 但是它总是返回与应有的相反的结果。 我用的时候也一样; 如
好吧,我会尽快解决的,因为这应该是一个很容易的解决办法... 我读过一堆类似的问题,答案似乎相当明显。从一开始我就不用抬头看了!但是...我有一个错误,我无法理解如何修复或为什么它会发生。 具体如下:
关于IO,我有两个问题。 A.在一个教程和一些StackOverflow答案中,他们声称没有被修复。是真的吗? 以下代码使用将数据读入字节数组(1024字节) 从API,有一行: 公共整数读取(字节b[])引发IOException @参数b:将数据读入的缓冲区 B.如果它们都是缓冲的,它们都将数据放入缓冲区,并从缓冲区中获取数据,那么使BufferedInputStream比FileInputS