我有一个文本文件admin.dat,如下所示:
blackranger|sdasdasdasd23123|1000
blueranger|sdasdasdasdwhhh22|1000
brownranger|lppsadospd123|1000
Run Code Online (Sandbox Code Playgroud)
我试图读取每一行,使用|作为我的分隔符并输出到每个部分的控制台.
代码:
package testing;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
public class Testing {
public static void main(String[] args) {
Scanner filereader = null;
try {
filereader = new Scanner(new File("./src/testing/players.dat"));
String data;
while(filereader.hasNextLine()) {
String foo = "abc|123|a213";
String[] bar = foo.split("|");
for (int i = 0; i < 3; i++) {
System.out.println(bar[i]);
}
}
} catch (FileNotFoundException e) {
System.out.println("File not found");
} catch (IOException e) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试写入文件
try
{
PrintWriter fileout = new PrintWriter("./src/javaapplication1/test.dat");
for(int i=0;i<10;i++)
{
fileout.println(i);
}
}
catch (IOException e)
{
System.out.println("File cannot be created");
}
Run Code Online (Sandbox Code Playgroud)
但是,我期待没有任何内容写入文件
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
我写这个文件的方式有什么问题?
我正在尝试读取文件夹中存在的几个csv文件,并将绝对路径放在列表中,然后循环到列表并将数据插入到不同表中的Excel中,但由于某种原因,只有最后一个循环才会覆盖所有内容.
package excel;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class FileReading {
public static void csvToXLS(String filename, String sheetno) {
try {
String csvFile = filename; //csv file address
String excelFile = "E:\\test.xls"; //xlsx file address
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet sheet = workBook.createSheet(sheetno);
String currentLine = null;
int RowNum = 0;
BufferedReader br = new BufferedReader(new FileReader(csvFile));
while ((currentLine = br.readLine()) != null) {
String …Run Code Online (Sandbox Code Playgroud) from arrayheap import ArrayHeap
def generateTable(self, node, table):
def codeTable(node, codeString):
if node.isLeaf:
table[node._char] = codeString
return
if node.getleft() is not None:
table(node.getLeft(), codeString + '0')
if node.getRight() is not None:
table(node.getRight(), codeString + '1')
codeTable(node, '')
return(table)
def main():
with open('codetable.txt', 'w') as cdt:
codeTable = {}
codeTable = HTree.generateTable(HTree, codeTable)
for i in sorted(codeTable):
cdt.write(str(i) + '\t' + str(codeTable[i]) + '\n')
main()
Run Code Online (Sandbox Code Playgroud)
我试图输出到文件的二进制遍历树中的每个单独节点.我已将预订和后序遍历方法留在文件中以供参考.我的问题是我的generateTable()方法出了什么问题(大部分代码都是提供给我的)我想输出它,以便它以格式列出遍历,0左边1是正确的<ascii value> : <binary path>.问题是,当我运行此代码时,我的输出文件codetable.txt为空.我究竟做错了什么?
我在Ada83中编写了以下代码来查找文件的大小:
with Text_IO;
use Text_IO;
procedure imp3ada is
package Int_IO is new Text_IO.Integer_IO(Integer);
use Int_IO;
inputFile: File_Type;
i: integer:=0;
fileSize: Integer:=0;
fileCurrentPosition: Integer:=0;
begin
open(inputFile, In_File, "test.cfg");
while not End_of_File(inputFile) loop
fileCurrentPosition:=fileCurrentPosition+1;
end loop;
fileSize:=fileCurrentPosition;
Int_IO.put(fileCurrentPosition);
Int_IO.put(fileSize);
close(inputFile);
end imp3ada;
Run Code Online (Sandbox Code Playgroud)
代码编译得很好,但是当我尝试运行时没有任何反应,我希望它能够打印文件中的字符数.我猜它会进入无限循环.有人可以帮助我解决它出错的地方吗?
我遇到过一种情况,我正在读取一些日志文件,然后通过以下代码片段计算我遇到的行数.
byte[] c = new byte[1024];
long count = 0;
int readChars = 0;
while ((readChars = is.read(c)) != -1) {
for (int i = 0; i < readChars; ++i) {
if (c[i] == '\n') {
++count;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试读取文件(CSV,Syslog或任何其他野生格式)时,它运行得很好,并给我正确的结果.但是当我尝试运行一个通过mac生成的文件时,它会变成干线,只是报告回读了一行.
现在我的日志文件很大,我知道它有几千行日志,但它只读了一行.我在Sublime中打开了这个文件,我可以看到所有单独的行,但是当我通过VIM查看这个文件时,它只显示了一个文件,每行末尾有一个字符'^ M'(我猜它是正在使用它作为行终止符).
两行的样本如下.你可以看到vim正在显示它应该是新行的^ M字符
15122,25Dec2013,19:42:25,192.168.5.1,log,allow ,, eth0,outbound,Application Control ,, Network,Bob(+),Bob(+),,,, 59857d77 ,,,,,,,, 570033 ,,,,,,,,,,,,, 192.168.5.7,176.32.96.190,tcp,80,56305,15606,554427,60461741,** ,,,,,,,, 1,**,**,**,**,**,**,**,**,**,其他:Wget/1.13.4(linux-gnu),其他:服务器,192.168.5.7,60461741:1 ,,,,, ,** …
我试图理解标准流如何在Linux中工作,特别是我可以stdout直接从我的终端捕获说,如尾巴.由于Linux中的所有内容都是文件,是不是可以简单地做一个tail -f /dev/stdout?
所以为了测试这个,我写了一个简单的程序:
int main(int argc, char * argv[]) {
while (1) {
printf("This takes advantage of stdout\n");
sleep(1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后在一个单独的终端我做了一个tail -f stdout,但没有打印.难道我做错了什么?
input_file 包含: Hi How are you
预期产出是: AHi How are youB
试过以下程序:
input = open("input_file",'r')
output = open("output_file",'w')
for line in input:
newline = "A" + line + "B"
output.write(newline)
input.close()
output.close()
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
AHi How are you
B
Run Code Online (Sandbox Code Playgroud)
请建议如何更改程序?
我是文件处理新手......
我正在编写一个程序,以下列格式保存文本文件中的数据:
3740541120991
Syed Waqas Ali
Rawalpindi
Lahore
12-12-2012
23:24
1
1
Run Code Online (Sandbox Code Playgroud)
(抱歉错误对齐,它不是程序的一部分)
现在我正在为删除记录的程序编写删除函数.到目前为止这是我的代码:
void masterSystem::cancelReservation()
{
string line;
string searchfor = "3740541120991";
int i=0;
ifstream myfile("records.txt");
while (getline(myfile, line))
{
cout << line << endl;
if (line==searchfor)
{
// DELETE THIS + THE NEXT 8 LINES
}
}
Run Code Online (Sandbox Code Playgroud)
}
我做了一些研究,发现没有简单的方法来访问文本文件的行,所以我们必须创建另一个文本文件.但问题是如何在将记录删除到新文本文件之前复制记录/数据?
我知道的方法java.io.File.createNewFile()将原子地创建由此抽象路径名指定当且仅当这个名称的文件尚不存在的新的空文件.
如果我只是传递它的路径,它创建的文件的扩展是什么?
try {
String destPath = "/data/data/" + getPackageName() +
"/databases";
File f = new File(destPath);
if (!f.exists())
{
f.mkdirs();
f.createNewFile();
........
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) file-io ×10
java ×5
python ×2
ada ×1
apache-poi ×1
c ×1
c++ ×1
debugging ×1
linux ×1
loops ×1
python-2.7 ×1
python-3.x ×1
split ×1
stdout ×1
string ×1
terminal ×1
vim ×1
while-loop ×1